这是我的代码,我只得到零,请帮我理解原因?
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a="";
cin>>a;
int m=a.length(),count=0;
for(int i=0;i<m;i++)
{
if( a[i] == ' ' || a[i] == '\t' || a[i] == '\n' )
{
count++;
}
}
cout<<count;
return 0;
}
为什么我会得到0?
答案 0 :(得分:3)
当您使用>>
阅读字符串时,它会读取空格 分隔 字词。简而言之,您无法使用它来阅读多字句子。我建议你改用std::getline
。
答案 1 :(得分:1)
您输入的输入不正确,请尝试输入(包含白色空格)
的std ::函数getline(标准:: CIN,一个);
您的代码的其他部分工作正常。
答案 2 :(得分:1)
根据 The manual ,当您使用>>
接受输入时,会跳过任何前导空格。
因此,在单词丢失之前键入的任何空格都不会放在字符串中。
尝试std::getline:
std::getline(std::cin, a); // reads in spaces too