字符串求字节数string

一行,一段英文,中间可能包含空格、英文字符、数字,及标点符号,不含回车键。总字符数不超过10000。
一行,一个正整数,该文章的单词数。
样例:
To be or not to be is a question.
9
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
int a=0;
while(cin>>s)
{
a++;
}
cout<<a;
return 0;
}
我不明白while循环中的条件放一个cin>>s是什么意思和怎么循环执行这个条件的。

循环输入字符串s
如果循环体内没有结束条件,可通过ctrl+z手动退出循环

如有帮助,还请帮忙点下采纳!感谢!

就是说读取不到输入就结束循环

cin是C++的标准输入流,其本身是一个对象,并不存在返回值的概念。
本程序中while(cin>>s),这里并不是cin的返回值,而是>>操作重载函数istream& operator>>(istream&, T &);的返回值,其中第二个参数由cin>>后续参数类型决定。其返回值类型为istream&类型,大多数情况下其返回值为cin本身(非0值),只有当遇到EOF输入时,返回值为0。
所以while(cin>>s)就是当有数据输入时就一直执行,没有输入就会退出循环。
“没有数据输入”在文件操作时时指遇到文末标志EOF,而对于键盘输入时可用ctrl+z手动退出循环。

你也可以用格式化输入,你可以这样理解
一个函数
它的功能是
判断你输入的是否为Ctrl+Z/D(Linux下为Ctrl+D,windows下为Ctrl+Z)

  • 如果是,他就返回0
  • 否则,返回1

    我相信您while已经学会了,望采纳哈

这篇文章讲的很详细,请看:数字字符串(string)