使用 std::cin >>时可以丢弃返回字符吗?

Possible to discard return character when using std::cin >>?

本文关键字:gt 返回 字符 std cin 使用      更新时间:2023-10-16

在 c++ 中使用>> 运算符捕获用户输入时,是否可以阻止控制台打印用户按下回车键时生成的换行符?

您无法阻止newline字符,因为当您使用cin时,您正在与不受用户控制的system core进行通信。 当您进入nEOF或其他异常情况时,console将返回。所以更好的方法是使用getchar()来捕获"",不要将其保留在buffer中。

可以通过从键盘输入两个 EOF 而不是回车来防止这种换行符行为。在控制台提示符下输入字符串后,点击

CTRL-D

, CTRL-D

请注意,这是一个特定于平台的答案。这适用于我的Mac,但在Windows操作系统上,EOF序列可能是CTRL-Z,返回。我希望得到一个答案编辑<- 在这里。

或者,您可以放弃>>运算符并使用类似 std::getline 的内容并指定一个精确的字符串终止分隔符。例如:

std::string myString;
std::getline(std::cin, myString, ';');
std::cout << myString;

这将从标准输入读取到myString,并将字符串终止 NULL 字符放在它找到第一个分号的位置 ';' 。然后,您只需按一次CTRL-D(输入EOF)。

您可以通过每次按空格键输入值或输入。但是最后您必须按回车键。
假设:您想输入"5,4,3,2,1"
你可以做: 5 [enter] 4 [enter] 3[enter] 2[enter] 1[enter]
另外: 5[space]4[space]3[space]2[space]1[enter]
但是,如果要在输入附近打印输出,则只需先打印输入,然后打印所需的内容即可。
例:
输入:3输出:input+1
所以你会做:

cout<<input;
cout<<" "<<input+1<<endl;

祝你好运:)