string s;
cin >> s;
cout << s ;
输入 “hello world”
输出 hello
为何 whlie (cin >> s) {
. cout << s << endl
能输出 hello
。 world
呢?
不是空格后都清空了吗?
第一次读取的是hello,第二次读取的是world
如果你输入hello world
whlie (cin >> s) {
cout << s << endl;
}
相当于
cin >> s;
cout << s << endl;
cin >> s;
cout << s << endl;
(此后因为你输入的是2个单词,后面没有了,第二次循环后,cin返回0,于是就不再继续)
while()括号里面为bool值,当为0(false)才停止循环,你可以用while(cin>>s)持续输入,是因为cin>>s也有返回值,且这个返回值转化为bool值不为0
while()括号里的应该是一个bool类型的值,在cin>>s的输入流下,如果string类的对象s中包含了空格,便会循环读取s。例如我的s是I am a boy
如果把它放进栈里的话,里面的值依次就是I ,am,a,boy。