1

如果我有我的命令行,例如:

foo arg1 arg2 << HEREDOC
  line1
  line2
HEREDOC

在 foo 中,我如何从 heredoc 中获得价值?

int main( char *argv[] )
{
  string arg1=argv[1];
  string arg2=argv[2];

  string heredoc= ?
}
4

2 回答 2

1

这里的文档是另一种进行 IO 重定向的方法。您的 shell 命令基本上是放入行line1,然后line2放入stdin您的程序。

所以你的代码应该是这样的:

int main(int argc, char *argv[])
// notice that your main declaration isn't conforming to C++ standard.
// it need additional argc parameter
{
  string arg1=argv[1];
  string arg2=argv[2];

  string heredoc_string1, heredoc_string2;
  getline(cin, heredoc_string1); 
  getline(cin, heredoc_string2);
}
于 2012-08-26T20:08:35.050 回答
1

heredoc 只是将内容重定向到stdin. 所以你可以使用:

string str;
while (getline(cin, str))
    cout << str << endl;
于 2012-08-26T20:09:19.200 回答