我正在编写一个函数int count_words(string str)
,它返回字符串中所有单词的计数。
问题在于,无论输入如何,结果都是1.任何人都可以帮忙吗?
#include <iostream>
#include <string>
using namespace std;
int count_words(string str)
{
int i,j;
j = 1;
int l = str.length();
for(i = 0; i < l; i++)
{
string c = str.substr(i,1);
if(c == " ")
{
j++;
}
}
cout << "The total word in the string: " << j << endl;
return j;
}
int main()
{
string str;
cout << "Please enter a string: ";
cin >> str;
int result = count_words(str);
return 0;
}
答案 0 :(得分:5)
如果您的字符串包含空格,则应使用cin.getline
,因为使用>>
运算符且cin
仅读取下一个空格
答案 1 :(得分:3)
请参阅std::cin input with spaces?
考虑迭代字符串:
auto cstyle= str.c_str();
for (int i = 0; i < str.length(); ++i)
{
if (cstyle[i]==' ')//assumes words are delimited by a single space
{
j++;
}
}
答案 2 :(得分:-2)
您应该使用:cin.getline
,例如:
int main()
{
cout << "Please enter a string: ";
unsigned size=10;
char*chr=new char[size];
cin.getline(chr,size);
string str(chr);
//cin >> str;
int result = count_words(str);
return 0;
}