3

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

4

3 回答 3

0

可以通过从键盘输入两个 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)。

于 2013-10-22T00:45:00.917 回答
0

您可以输入值或每次按空格键输入。但最后你必须按回车键。
假设:你想输入“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;

祝你好运 :)

于 2013-10-22T00:59:30.440 回答
0

你无法阻止newline字符,因为当你使用 时cin,你正在与 通信system core,这是不受用户控制的。console将返回,当你进入\nEOF其他异常情况。所以更好的方法是使用getchar()捕获'\n',并且不要将它留在buffer.

于 2013-10-22T01:04:30.807 回答