C++练习17:统计字符串中有多少个单词
生活随笔
收集整理的這篇文章主要介紹了
C++练习17:统计字符串中有多少个单词
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C++練習17:統計字符串中有多少個單詞
- 題目
- 遇到的困難
- 最終代碼
題目
編寫一個c++程序,計算字符串中的單詞數。每當遇到從空白到非空白字符的轉換時,就會遇到單詞。字符串只包含由空格分隔的單詞。
遇到的困難
一開始感覺這題沒啥特別的,比較簡單,但是遇到了個坑(原本的代碼如下):
#include <string> #include <iostream> using namespace std;int main(){string s;cout << "請輸入一句話(以空格分割單詞):"; cin >> s;int count = 0;for(int i = 0; i <= s.size(); i++){if(s[i] == ' '){count += 1;}}cout << "這句話有" << count+1 << "個單詞"; return 0; }結果輸出是一個錯誤的答案:
參考了網絡上的一些資料發現:
cin讀取數據時,它會傳遞并忽略任何前導白色空格字符(空格、制表符或換行符)。意味著一旦它接觸到第一個非空格字符即開始閱讀,當它讀取到下一個空白字符時,它將停止讀取。
#include <string> #include <iostream> using namespace std;int main(){string s;cout << "請輸入一句話(以空格分割單詞):"; cin >> s;int count = 0;for(int i = 0; i <= s.size(); i++){cout << s[i];}return 0; }輸出如下:
可見字符串在出現空格后停止讀取,故只打印出hello
解決方法:
使用getline()函數可以使cin讀取出空格等字符串
參考文章:C++ getline函數用法詳解
最終代碼
#include <string> #include <iostream> using namespace std;int main(){string s;cout << "請輸入一句話(以空格分割單詞):"; getline(cin, s);int count = 0;for(int i = 0; i <= s.size(); i++){if(s[i] == ' '){count += 1;}}cout << "這句話有" << count+1 << "個單詞"; // 單詞數比空格多1return 0; }輸出:
總結
以上是生活随笔為你收集整理的C++练习17:统计字符串中有多少个单词的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: openstack neutron网络模
- 下一篇: Dev c++ 编译报错[Error]s