【问题标题】:devc++ input from file does not work来自文件的 dev c++ 输入不起作用
【发布时间】:2013-03-08 23:44:16
【问题描述】:

我正在尝试将 .txt 内容重定向到 .exe

程序.exe

file.txt 的内容是

35345345345
34543534562
23435635432
35683045342
69849593458
95238942394
28934928341

但数组的第一个索引是文件路径,文件内容不显示。

int main(int argc, char *args[])
   {
    for(int c = 0; c<argc; c++){
            cout << "Param " << c << ": " << args[c] << "\n";
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}

期望的输出:

Param0: 35345345345
Param1: 34543534562
Param2: 23435635432
Param3: 35683045342
Param4: 69849593458
Param5: 95238942394
Param6: 28934928341

【问题讨论】:

  • 你能展示你的代码吗?
  • 不看那个程序的源码很难说,能不能把它加到问题里?
  • 已编辑,包含 src。

标签: c++ dev-c++


【解决方案1】:

myapp &lt; file.txt 语法传递给 stdin(或 cin,如果您愿意),而不是参数。

【讨论】:

  • 嗯。我懂了。是否可以改变行为?
  • 你用的是什么外壳?请参阅 medgno 的答案。
【解决方案2】:

您误解了argcargv 的用途。它们包含程序的命令行参数。例如,如果您运行:

program.exe something 123

argv 指向的以 null 结尾的字符串将是 program.exesomething123

您正尝试使用&lt; file.txt 将文件内容重定向到program.exe。这 不是 命令行参数。它只是将文件的内容重定向到程序的标准输入。要获取这些内容,您需要从 std::cin 中提取。

【讨论】:

    【解决方案3】:

    当您说“但数组中的第一个索引是文件路径并且不显示文件内容”时。听起来您正在尝试从 argv 和 argc 读取输入。尖括号壳运算符不能那样工作。相反,标准输入(cin 和几个 C 函数读取的内容)具有该文件的内容。因此,在上述情况下,要从文件中读取,您可以使用 cin。

    如果您真的想要将文件自动插入到参数列表中,我无法帮助您使用 windows shell。但是,如果您可以选择使用 bash,则可以使用以下方法:

    program.exe `cat file.txt`
    

    反引号运算符扩展为其中包含的命令的结果,因此内容随后作为参数传递给 program.exe(同样,在 bash shell 下而不是 windows shell 下)

    【讨论】:

    • 谢谢。我正在使用windows atm。顺便说一句,这很有用,因为我大部分时间都使用 linux。
    【解决方案4】:

    这段代码完成了我对另一段代码的期望。感谢所有帮助过的人。

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
    string line;
    while (getline(cin, line))
        cout << "line: " << line << '\n';
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      • 2014-09-18
      • 1970-01-01
      相关资源
      最近更新 更多