【问题标题】:redirecting contents of file as standard input to executable file linux将文件内容作为标准输入重定向到可执行文件linux
【发布时间】:2014-02-03 09:52:07
【问题描述】:

所以我在 SSH shell 中遇到了问题。我有一个 proj1.cpp 文件,它将标准输入中的文本读入一个名为“word”的字符串。之后,我使用 makefile 将其编译为可执行文件(proj1.x)。然后在 SSH shell 中我执行类似“proj1.x 单词”)。它工作正常,但似乎在读了大约 30 个字符后就中断了。但是,当我简单地使用代码块或其他东西运行“proj1.cpp”时,一切正常(对于我输入的文本行,无论它的大小是多少)所以我不知道问题是什么。

我在想问题可能是我正在使用“getline(cin, word);”它从标准输入读取 1 行文本到名为“word”的字符串,但我正在重定向的文件的某些内容有几行。我将使用什么代码从标准输入中读取所有文本(我想直到程序终止?)所以当我将文件重定向到标准输入时,它会读取所有内容并将其上传到字符串“单词”。也许是一个while循环?或者,如果您认为这是其他问题,请发表评论。

我现在用的是什么:

string word;
getline(cin, word);

我的生成文件:

proj1.x: proj1.cpp
    $(CXX) -o $@ $<

clean: 
    rm -f *.o *.x core.*

【问题讨论】:

    标签: c++ linux shell ssh makefile


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 2020-12-09
      • 1970-01-01
      • 1970-01-01
      • 2017-08-08
      相关资源
      最近更新 更多