Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 关于练习的问题(比亚恩斯购买力平价书)_C++ - Fatal编程技术网

C++ 关于练习的问题(比亚恩斯购买力平价书)

C++ 关于练习的问题(比亚恩斯购买力平价书),c++,C++,为什么当我在while循环外输入以空格分隔的字符串,并试图在屏幕上打印它们时,只会出现我键入的第一个字符串,而在while循环内看到的代码会逐个打印所有字符串 //this one prints the strings one by one string current; while (cin >> current) { cout << current << " \n"; } //this one only prints the

为什么当我在while循环外输入以空格分隔的字符串,并试图在屏幕上打印它们时,只会出现我键入的第一个字符串,而在while循环内看到的代码会逐个打印所有字符串

//this one prints the strings one by one
    string current;

while (cin >> current) {
        cout  << current << " \n";
}


//this one only prints the first one the user types
string current;
cin >> current;
cout << current << " \n";
这是cin默认的操作方式。它跳过任何空格,读取到下一个空格,然后返回该字符串。如果您输入:

    testing cin input
您需要执行cin三次才能获得每个单词。这就是while循环中正在发生的事情


我提到默认值是因为您可以将行为更改为不跳过空格

在循环外部,您读取一个字符串并打印它。不管你输入了多少,只有一条输入语句。这就是循环的目的,输入它们。你输入的和程序读取的不一样。您可以编写一个读取一个字符的程序,不管您是否键入50个字符,只有一个字符将被读取。上面的程序也一样,它只读取一个字符串,不管你是否输入了多个字符串,只有第一个字符串会被读取。哦,我明白了。我想我明白了。谢谢。@rm1948所以当我用testing cin input按enter键时,它将在while循环中为我输入的每个字符串执行cin>>当前命令,对吗?这是真的,但如果您输入try this,您将得到try,然后是这个输出。按下“回车”键后,Cin将按顺序读取其中两个。