意外的cin行为
Unexpected cin behavior
我正在编写一个函数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;
}
如果字符串包含空格,则应使用cin.getline
,因为将>>
运算符与cin
一起使用只能读取下一个空白
是否看到std::cin带空格输入?
考虑在字符串上迭代:
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++;
}
}
您应该使用: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;
}
相关文章:
- cin.ignore() 正在产生不需要的行为
- 在GLFW应用程序中,std::cin的行为很奇怪
- 试图理解cin 行为
- C++ getline(cin,变量)行为不端.网站上没有任何解决方案有帮助
- 在接收带有 CIN 条件的输入时按回车键时出现奇怪的行为
- 使用 cin.ignore 和 cin.clear CPP 时的奇怪行为
- C++怪异的cin.ignore行为
- cin.getline()的奇怪行为
- cin和switch的奇怪行为
- 多次从 std::cin 读取 -- Linux 和 Mac OS X 上的行为不同
- 需要帮助修复奇怪的cin行为
- scanf(), std::cin 在多线程环境中的行为如何
- cin.get()和cin.put()的行为
- 意外的cin行为
- 为什么cin.ignore()的行为不稳定
- c++中while循环条件中使用std::cin的行为
- 来自cin的未知行为
- cin对于bool的意外行为
- 两次使用cin时的意外行为
- 从cin读取两个字符串并将其写回时出现意外行为