【问题标题】:File I/O in c++ and linux command line redirectc++ 中的文件 I/O 和 linux 命令行重定向
【发布时间】:2011-11-22 10:20:07
【问题描述】:

我有一个程序,它接受一个带有地图的文本文件,然后找到最短路径并将其输出到另一个文件。

它需要像这样工作

./pathFinder -arg < inputMap.txt > outputMap.txt

我的问题是,有了这个输入,argv[] 和 argc 中会填入什么(重定向是否算作参数),我应该使用文件流还是只使用 cin/cout... 或者其他什么。谢谢。

【问题讨论】:

  • 我刚刚尝试使用 cin 并且程序等待输入而不是使用 txt 文件。
  • cincout 是“文件流”。
  • 对不起,我的意思是 ifstream 和 ofstream
  • @Max - 如果你的程序等待输入,那么要么你没有像你描述的那样调用,要么你的程序有错误。请将您的程序减少到仍然存在问题的最小版本,并在此处发布。如需比较,请参阅this program

标签: c++ linux redirect input


【解决方案1】:

argc 将是 2,argv[1] 将指向 "-arg"

重定向只会出现在stdinstdout(由std::cinstd::cout 包裹)。

【讨论】:

  • @quasiverse:不。这是由外壳处理的。
  • cin>>var 因键盘输入而挂起,如果您希望从文件输入,是否有不同的方法?
  • @Max:我不确定我理解你的意思。 shell 会逐字地流入文件的内容,而不是您在控制台中键入的字符。
  • @Max 如果你重定向它并且它仍然挂起,那么文件没有正确的输入或者你做错了。
  • 感谢迄今为止的帮助...当我运行程序时,无论我是否包含重定向,它的行为方式都是一样的。 (等待输入)
【解决方案2】:

argv 将包含{"./pathFinder", "-arg"}

【讨论】:

  • @Kerrek:谢谢。我应该只使用复制/粘贴。
【解决方案3】:

重定向不会算作参数。 只需使用 cin/cout 就可以了。

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    相关资源
    最近更新 更多