gpt4 book ai didi

c++ - 运行时对 cin 函数的困惑

转载 作者:太空宇宙 更新时间:2023-11-04 14:52:13 24 4
gpt4 key购买 nike

int main()
{
cout<< "Please enter your first name (followed by 'enter'):\n";

string first_name; // first_name is a variable of type String
cin >> first_name; // read characters into first_name
cout<<"Hello, " <<first_name<<"!\n";

cout<<" first_name "<<" is "<< first_name <<"\n";



cout << "Please enter you first name and age\n";
string new_first_name = "unentered";
int age = -1;


cin >> new_first_name;
cin >> age;
cout << "Hello, " << new_first_name << "(age " << age << ") \n";

return 0;

我上面的代码基本上是我一直在研究的一本书中的一个示例。

当我编译和运行时发生了一些我不理解的相当有趣的事情。在第一个提示中,如果我输入一个名字说“乔”,那么程序的其余部分就可以正常工作。也就是说,我可以在第二个提示符下输入新名称“George”和年龄“23”,输出就可以了。

另一方面,如果我在第一个提示中输入两个用逗号分隔的词,比如“Joe Person”,那么在第二个提示中,如果我输入 George 23,我会得到输出 Person (age 0)。

所以它似乎采用了第二个名字,在第二个字符串提示中使用了它,然后对年龄输入做了一些事情。我很惊讶它没有输出 -1 的初始化值。

谁能告诉我这里可能发生了什么?我原以为对于第一个提示,程序会忽略第一个空格之后的任何内容,但它看起来好像以某种方式存储,然后存储在 new_first_name 变量中。

最佳答案

C++ 流提取运算符,用于字符串,read tokens .这就是下一个空白区域的任何内容。

一般cpp-reference是 C/C++ 的一个很好的引用。

关于c++ - 运行时对 cin 函数的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54644513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com