来自文件的dev c ++输入不起作用

时间:2013-03-08 23:44:16

标签: c++ dev-c++

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

program.exe< file.txt的

和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

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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

program.exe something 123

argv指向的以空字符结尾的字符串将为program.exesomething123

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

答案 2 :(得分:0)

当您说“但数组中的第一个索引是文件路径并且未显示文件内容时”。听起来你正试图从argv和argc读取输入。角支架外壳操作员不会那样工作。相反,stdin(cin和几个C函数从中读取)具有该文件的内容。因此,要从上面的案例中读取文件,您将使用cin。

如果你改为 想要将一个文件自动插入到参数列表中,我无法帮助你使用windows shell。但是,如果您可以选择使用bash,则以下内容将起作用:

program.exe `cat file.txt`

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

答案 3 :(得分:0)

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

#include <iostream>
#include <string>

using namespace std;

int main()
{
string line;
while (getline(cin, line))
    cout << "line: " << line << '\n';
}