C++ 我想计算两个单词之间的空格或间隙?

C++ 我想计算两个单词之间的空格或间隙?,c++,C++,这是我的代码,我只得到零,请帮助我理解为什么 #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' )

这是我的代码,我只得到零,请帮助我理解为什么

#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;
}
#包括
使用名称空间std;
int main()
{
字符串a=“”;
cin>>a;
int m=a.length(),count=0;

对于(int i=0;i当您阅读带有
>
的字符串时,它会读取空格分隔的单词。简而言之,您不能使用它来阅读多单词句子。我建议您改为使用。

如果您输入错误,请尝试此操作以获取输入(其中当然会包含空格)

std::getline(std::cin,a)

代码的其他部分工作正常。

根据当您使用
>
接受输入时,它将跳过任何前导空格

因此,在单词之前键入的任何空格都会丢失,并且不会放在字符串中

尝试:


您对
a
的输入是什么?
std::isspace
可能会有帮助,而不是检查每个可能的空白字符。
cin>>a
只会得到一个单词,而不是整个字符串。查看如何从用户处获得整个字符串(
getline()
)结尾的rant减1。格式选项的存在是有原因的。你需要提供更多的细节。
std::getline(std::cin, a); // reads in spaces too