C++ devc&x2B+;文件中的输入无效
我正在尝试将.txt内容重定向到.exe program.exeC++ devc&x2B+;文件中的输入无效,c++,dev-c++,C++,Dev C++,我正在尝试将.txt内容重定向到.exe program.exe
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;
}
当您说“但是数组中的第一个索引是文件路径,并且文件内容不显示”时,听起来好像您试图从argv和argc读取输入。“尖括号壳”操作符不是这样工作的。相反,stdin(cin和几个C函数所读取的内容)具有该文件的内容。因此,要从上述案例中读取文件,您需要使用cin
如果您真的想让一个文件自动插入参数列表中,我无法帮助您使用windows shell。但是,如果您可以选择使用bash
,则以下操作将起作用:
program.exe `cat file.txt`
backtick操作符扩展为包含在中的命令的结果,因此内容随后作为参数传递给program.exe(同样,在
bash
shell下,而不是windows shell下)myapp
语法传递给stdin
(或者cin
,如果您愿意的话),不是参数。您误解了argc
和argv
的用途。它们包含程序的命令行参数。例如,如果您运行:
program.exe something 123
argv
指向的以null结尾的字符串将是program.exe
、something
和123
您正试图使用
将文件内容重定向到program.exe
。这不是命令行参数。它只是将文件内容重定向到程序的标准输入。要获取这些内容,您需要从std::cin
中提取这些内容。这段代码完成了我希望对另一段代码执行的操作。谢谢所有帮忙的人
#include <iostream>
#include <string>
using namespace std;
int main()
{
string line;
while (getline(cin, line))
cout << "line: " << line << '\n';
}
#包括
#包括
使用名称空间std;
int main()
{
弦线;
while(getline(cin,line))
你能展示你的代码吗?很难说没有看到程序的源代码,你能把它添加到问题中吗?编辑,src include.hmmm。我明白了。有可能改变行为吗?你使用的是什么shell?见medgno的回答。谢谢。我使用的是windows atm.btw,这很有用,因为我大部分时间都使用linux。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string line;
while (getline(cin, line))
cout << "line: " << line << '\n';
}