将文件内容重定向为可执行文件linux的标准输入

时间:2014-02-03 01:27:53

标签: c++ linux shell ssh makefile

所以我在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.*

1 个答案:

答案 0 :(得分:0)

要收集所有内容,您可以使用while循环或其他变体,例如for循环:

std::string content;

for (std::string line; std::getline(std::cin, line); )
{
    content += line;
}