所以我在SSH shell中遇到了问题。我有一个proj1.cpp文件,它将文本从标准输入读入一个名为“ word ”的字符串。之后我使用makefile将其编译成可执行文件(proj1.x)。然后在SSH shell中我执行像“proj1.x< test0”这样的命令,它将文件“test0”的内容重定向到“proj1.x”的标准输入中(基本上,将test0中的文本放入程序字符串中) “的字”)。它的工作正常,但似乎在阅读大约30个左右的字符后就会中断。然而,当我简单地使用代码块或其他任何东西运行“proj1.cpp”时,一切正常(对于我输入的任何大小的文本行)所以我不知道问题是什么。
我在想这个问题可能是我正在使用“getline(cin,word);”它从标准输入读取1行文本到名为“word”的字符串,但是我重定向的文件的一些内容有几行。我将使用什么代码来读取标准输入中的所有文本(我想直到程序终止?)因此,当我将文件重定向到标准输入时,它会读取所有内容并将其上传到字符串“字”。也许一会儿循环?或者,如果您认为这是其他问题,请发表评论。
我现在正在使用的是什么:
string word;
getline(cin, word);
我的makefile:
proj1.x: proj1.cpp
$(CXX) -o $@ $<
clean:
rm -f *.o *.x core.*
答案 0 :(得分:0)
要收集所有内容,您可以使用while
循环或其他变体,例如for
循环:
std::string content;
for (std::string line; std::getline(std::cin, line); )
{
content += line;
}