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