-1

I'm trying to redirect a .txt content to .exe

program.exe < file.txt

and contents of file.txt are

35345345345
34543534562
23435635432
35683045342
69849593458
95238942394
28934928341

but the first index in array is the file path and the file contents is not displayed.

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

Desired output:

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

4 回答 4

4

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

于 2013-03-08T23:48:59.053 回答
1

你误解了什么argcargv是为了什么。它们包含程序的命令行参数。例如,如果您运行:

program.exe something 123

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

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

于 2013-03-08T23:51:27.833 回答
0

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

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

program.exe `cat file.txt`

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

于 2013-03-08T23:48:29.213 回答
0

这段代码做了我期望对另一个做的事情。感谢所有帮助过的人。

#include <iostream>
#include <string>

using namespace std;

int main()
{
string line;
while (getline(cin, line))
    cout << "line: " << line << '\n';
}
于 2013-03-08T23:57:43.617 回答