我正在尝试将.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
答案 0 :(得分:4)
myapp < file.txt
语法传递给stdin
(或cin
,如果您愿意),而不是参数。
答案 1 :(得分:1)
您误解了argc
和argv
的用途。它们包含程序的命令行参数。例如,如果您运行:
program.exe something 123
argv
指向的以空字符结尾的字符串将为program.exe
,something
和123
。
您正尝试使用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';
}