我正在Windows
中编写一个接受string
作为input的CLI
应用程序。 我假设input的结束是当用户按Ctrl + Z (模仿EOF
)。
当我input“ qwe ”并按下Ctrl + Z时 , getline
不是只给tmp
分配“ qwe ”,而是由于某种原因要求input一行。 但是, tmp
的结果值仍然是“ qwe ”,忽略了多余的行。 我使用的代码如下:
string tmp; getline(cin, tmp);
UPD:
正如在C ++和CTRL + Z中所说的那样,它只是一般的Windows行为,其中Ctrl + Z符号must
位于行首。
要获得多行input,您应该使用字符读取,直到遇到'\n' || EOF
'\n' || EOF
。
正如OP所解释的那样:这是典型的Windows行为,其中Ctrl + Z符号必须位于行首,否则将无法正常工作。
所以,如果你输入“foo”,然后按Ctrl + Z发送EOF
信号,然后输入“bar”,“foo”将按预期读取,然后EOF
将在输入缓冲区中等待,直到输入“bar”。 即使用户输入了该程序,程序仍将停在EOF
,“bar”将被忽略。
用cin和CTRL + Z阅读C ++问题 。