繁体   English   中英

C ++第一个字符不使用getline打印出来

[英]C++ first character does not print out using getline

运行此代码后,它将提示我输入第一个路径,例如c:/ hello,然后输入第二个路径,例如c:/ world。

输出:

  • 第一条路径: c:/hello
  • 第二条路径:/world

如您所见,第二条路径前面没有ac。 但是在cout <<“之后输入第二条路径后,我删除了cin.get(): 它能够在前面显示c。 有人可以向我解释为什么吗?

system("cls");
cout << "Enter first path: ";
cin.get();
getline(cin, firstPath);
cout << endl;
cout << "First path: " << firstPath << endl;
cout << endl;
cout << "Enter second path: ";
//cin.get(); // Need to be remove to shows c:/world
getline(cin, second path);
cout << endl;
cout << "Second path: " << secondPath<< endl;
cout << endl;
system("pause")
system("cls");

TL:DR; 删除您的cin.get(); 线


删除cin.get(); 它将从读取一个字符cin ,所以从下一个读cin将读取下一个字符,所以在第二情况下,“C”是由读cin.get()并因此下一读取, getline(cin, second path)将不会读取它(它已经被读取)。 为什么在第一次使用cin.get()之后读取“ c”是个谜(也许您在“ c”之前输入空格?

仅当您想在输入流中获取下一个字符并将其存储在某个位置时,才使用cin.get() (例如, char c = cin.get() ,在这种情况下为c == 'c' )。 如果要跳过当前字符,请使用cin.ignore()cin.get()相同,除了可以选择要跳过多少个字符外,它也不会返回任何已读取的字符。 无论哪种方式,在这种情况下都不宜使用它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM