DEVC++输入不起作用
我试图重定向.txt的内容,以.EXEDEVC++输入不起作用
的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
当你说“但在数组中的第一个索引文件路径和不显示文件内容。”这听起来像你正在尝试从argv和argc读取输入。角支架壳操作员不会那样工作。相反,stdin(cin和几个C函数读取的内容)具有该文件的内容。所以,要从上面的案例中读取文件,你需要使用cin。
如果你改为真的想把文件自动插入参数列表中,我不能帮你用windows shell。但是,如果你有使用bash
的选项,下面的工作:
program.exe `cat file.txt`
反引号运算符扩展到包含在该命令的结果,然后这样的内容作为参数传递给PROGRAM.EXE传递(再次,在bash
外壳,而不是Windows外壳程序)下
谢谢。我正在使用Windows atm。顺便说一句,这是有用的,因为我大部分时间使用Linux。 – 2013-03-09 00:04:30
您误解了argc
和argv
的用途。它们包含程序的命令行参数。如果,例如,你跑:
program.exe something 123
空终止字符串指向argv
会program.exe
,something
和123
。
您正试图使用< file.txt
将文件的内容重定向到program.exe
。这是而不是的一个命令行参数。它只是将文件的内容重定向到程序的标准输入。要获取这些内容,您需要从std::cin
中提取。
这段代码完成了我期望用另一个做的事情。谢谢每个人的帮助。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string line;
while (getline(cin, line))
cout << "line: " << line << '\n';
}
你能显示你的代码吗? – 2013-03-08 23:45:00
很难说没有看到该程序的来源,你可以添加到该问题? – fvu 2013-03-08 23:46:00
编辑,包括src。 – 2013-03-08 23:47:32