【发布时间】:2013-10-21 19:35:18
【问题描述】:
在c++中使用>>操作符捕获用户输入时,是否可以防止控制台打印用户按回车键时生成的换行符?
【问题讨论】:
-
你能给我们举个例子来说明你的意思吗?在什么情况下打印新行?
-
我不认为你可以阻止它,但你可以通过移动光标来处理它。
-
this 的副本
标签: c++
在c++中使用>>操作符捕获用户输入时,是否可以防止控制台打印用户按回车键时生成的换行符?
【问题讨论】:
标签: c++
您无法阻止newline 字符,因为当您使用cin 时,您正在与system core 通信,这是不受用户控制的。当您输入\n 或EOF 或其他异常情况时,console 将返回。
所以更好的方法是使用getchar()来捕获'\n',不要留在buffer中。
【讨论】:
可以通过从键盘输入两个 EOF 而不是回车来防止这种换行行为。在控制台提示符下输入字符串后,点击
CTRL-D, CTRL-D
请注意,这是特定于平台的答案。这适用于我的 Mac,但在 Windows 操作系统上,EOF 序列可能是 CTRL-Z、RETURN。我将不胜感激编辑答案
或者,您可以放弃 >> 运算符并使用 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;
祝你好运:)
【讨论】: