两次使用cin时的意外行为
unexpected behavior when using cin twice
我在控制台程序中有以下c++代码:
float var1, var2;
cin >> var1;
cin >> var2;
当我要输入第二个变量并使用右箭头键时,屏幕上开始出现第一个变量的输入。如果我按enter键,第二个变量将采用屏幕上显示的值。我需要重置cin缓冲区吗?我试着利用:
cin.clear();
:
cin.ignore();
但是行为保持不变
这与c++无关。你所经历的是cmd.exe
的一个特性,使用右箭头键得到你之前键入的行(字符对字符),如果右箭头作为新行的第一个按键被按下。
无事可做。只需要知道编译器的行为。cin
将采用空格(s)或下一行(n)分隔的值。现在,上下箭头在历史中导航,这样您就可以在控制台中获得以前的输入。您可以从命令提示符进行测试。
相关文章:
- C++中的cin.ignore()函数不适用于整个流
- 在C++中对T*类型执行std::move的意外行为
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- Problems with std::cin.fail()
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- 处理除以零会导致<csignal>意外行为
- vscode下的Arduino代码出现意外编译错误
- 使用++运算符会导致意外的结果
- 套接字读取后,我在缓冲区中看到意外输入
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 由cin中的字符串中未捕获空白引起的分割错误
- 在C++中使用Cin,我如何在1行中输入
- 使用vscode调试时,GDB意外退出
- 将 cin 限制为只有一个
- 此测试()中发生了什么意外过程?为什么总是覆盖 ch[0 1 2..]?
- 如果在循环中给cin一个意外的输入,则会自动输入C++换行符作为输入
- 意外的cin行为
- cin对于bool的意外行为
- 两次使用cin时的意外行为
- 从cin读取两个字符串并将其写回时出现意外行为