使用 C++ 中的 >> 运算符捕获用户输入时,是否有可能防止控制台打印由用户按下回车键时生成的换行符?
您可以通过每次按空格键输入值或输入。但最后必须按回车键。
比如说:您想输入“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;
祝你好运 :)
可以通过从键盘输入两个EOF而不是回车符来防止这种换行行为。在控制台提示处输入字符串后,按
CTRL-D,CTRL-D
请注意,这是一个特定于平台的答案。这适用于我的Mac,但在Windows操作系统上,EOF序列可能是CTRL-Z,RETURN。我会感激一个答案编辑 <-- HERE。
或者,您可以放弃>>运算符,并使用类似std::getline的东西,并指定精确的字符串终止分隔符。例如:
std::string myString;
std::getline(std::cin, myString, ';');
std::cout << myString;
这将从标准输入读取到myString
,并在找到第一个分号';'
时放置字符串终止NULL字符。然后您只需要按一次CTRL-D(输入EOF)。
你无法阻止 newline
字符的出现,因为当你使用 cin
时,你正在与不受用户控制的 system core
进行通信。当你输入 \n
或 EOF
或其他异常情况时,console
将返回。
因此更好的方法是使用 getchar()
捕获 '\n',并且不要将其留在 buffer
中。