c – 自定义命令行参数
发布时间:2020-12-16 09:31:56 所属栏目:百科 来源:网络整理
导读:我的命令行参数有问题.我完成了程序,所以我可以从命令行启动它: program.exe test.txt copy_test.txt 基本上,我的程序执行以下操作: 输入一些文本文件 对其进行排序并复制到新的文本文件 但是(总是这样但是?!),我应该从命令行启动程序,如下所示: progra
我的命令行参数有问题.我完成了程序,所以我可以从命令行启动它:
program.exe test.txt copy_test.txt 基本上,我的程序执行以下操作: >输入一些文本文件 但是(总是这样但是?!),我应该从命令行启动程序,如下所示: program.exe -input=test.txt -output=copy_test.txt 我不知道该怎么做.我研究过,但我没有找到任何帮助:( 请回复. #include <string> #include <iostream> #include <fstream> #include <vector> #include <algorithm> using namespace std; int main ( int argc,char* argv[]) { ifstream in(argv[1]); ofstream out(argv[2]); vector <string> sV; string line; while (in >> line) sV.push_back(line); for ( int i = 0; i < sV.size(); i++) sort ( sV.begin(),sV.end () ); for ( int i = 0; i < sV.size(); i++) out << sV[i] << endl; cin.get(); return 0; } 解决方法
好吧,使用新的格式参数,您不能只是按原样将它们传递给流构造函数.
您必须检查它们是否以特定字符串开头,例如使用strncmp,然后传递相关位的地址,例如argv [1] 8作为输入类型. 由于您提供了–input = type前缀,因此您可能还希望处理它们可能处于其他顺序的可能性. 例如,您可以替换: int main (int argc,char* argv[]) { ifstream in(argv[1]); ofstream out(argv[2]); 有类似的东西: int main (int argc,char* argv[]) { char *infile = 0; char *outfile = 0; for (int i = 1; i < argc; i++) { if (strncmp (argv[i],"--input=",8) == 0) { infile = argv[i] + 8; } else { if (strncmp (argv[i],"--output=",9) == 0) { outfile = argv[i] + 9; } else { std::cerr << "Invalid argument [" << argv[i] << "]" << std::endl; return -1; } } } if ((infile == 0) || (outfile == 0)) { std::cerr << "Need to specify input and output file" << std::endl; return -1; } ifstream in(infile); ofstream out(outfile); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |