在 c++ 中使用 >> 运算符捕获用户输入时,是否可以防止控制台打印用户按下返回键时生成的换行符?
3 回答
可以通过从键盘输入两个 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;
祝你好运 :)
你无法阻止newline
字符,因为当你使用 时cin
,你正在与 通信system core
,这是不受用户控制的。console
将返回,当你进入\n
或EOF
其他异常情况。所以更好的方法是使用getchar()
捕获'\n',并且不要将它留在buffer
.