使用std :: cin>>?时可能会丢弃返回字符

时间:2013-10-21 19:35:19

标签: c++

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

3 个答案:

答案 0 :(得分:0)

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

  

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)一次。

答案 1 :(得分: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;
祝你好运:)

答案 2 :(得分:0)

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