Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;getline(cin,buffer)不';当我按下CTRL+;Z_C++_Windows_Input_Getline_Eof - Fatal编程技术网

C++ C++;getline(cin,buffer)不';当我按下CTRL+;Z

C++ C++;getline(cin,buffer)不';当我按下CTRL+;Z,c++,windows,input,getline,eof,C++,Windows,Input,Getline,Eof,我正在Windows中编写一个CLI应用程序,它接受字符串作为输入。我假设输入结束时用户按下Ctrl+Z(模仿EOF) 当我输入“qwe”并按Ctrl+Z时,getline而不是仅仅将“qwe”分配给tmp会出于某种原因要求我再输入一行。但是,tmp中的结果值仍然是“qwe”,忽略了额外的行。我使用的代码如下所示: string tmp; getline(cin, tmp); UPD: 正如中所述,这只是Windows的常见行为,其中Ctrl+Z符号必须位于行的开头 要获得多行

我正在
Windows
中编写一个
CLI
应用程序,它接受
字符串作为输入。我假设输入结束时用户按下Ctrl+Z(模仿
EOF

当我输入“qwe”并按Ctrl+Z时,
getline
而不是仅仅将“qwe”分配给
tmp
会出于某种原因要求我再输入一行。但是,
tmp
中的结果值仍然是“qwe”,忽略了额外的行。我使用的代码如下所示:

    string tmp;
    getline(cin, tmp);
UPD:

正如中所述,这只是Windows的常见行为,其中Ctrl+Z符号
必须位于行的开头


要获得多行输入,应使用“按字符读取”,直到遇到
'\n'| | EOF

,如OP所述:这是典型的Windows行为,其中Ctrl+Z符号必须位于行的开头,否则将无法按预期工作

因此,如果您输入“foo”,然后按Ctrl+Z发送
EOF
信号,然后输入“bar”,“foo”将按预期读取,然后
EOF
将在输入缓冲区中等待,直到键入“bar”。程序将停止在
EOF
,忽略“bar”,即使用户键入了它


阅读更多信息。

hmm,查看重复主题,当我在输入的开始按CTRL+Z时,它会完美工作。但是如果它在结尾或中间,则要求额外的行,并将所有的“^ z”分配给TMP,然后才移动到下面的代码行。如果getline在其中,那么这是一个关于std::cin中ctrl+z行为的问题,还是只想读取字符串数组中的文件?或者我理解错了?我需要把stdin读入一个字符串数组。这就是任务。但我假设他们将以ctrl+z结束输入,所以我想确保getline在此之后不会要求输入。或者用户只需要知道如何使用ctrl+z组合键就可以了?这似乎很奇怪。但是,这个任务将由codeforces.com检查,我是说服务器,所以我可能只需要保持原样,为什么你需要一个数组?您需要拆分输入字符串吗?数据是如何输入的(如果是一个单词的话)?嗯,它只是标准输入,所以它应该模仿键盘(可能只是过去的数据,就像我用ctrl+v做的那样)。我需要一个数组,因为我需要处理每个字符串,然后输出。该程序的目的是格式化文本的缩进。嗯,是的,这与我上面写的完全相同。@Sam非常同意,但答案应该放在答案部分,这就是为什么我认为发布答案是个好主意。=)这个主意确实不错:)