我想打开通过命令行收到的文件名并对其进行一些更改。
我在视觉工作室做。我的输入文件位于我的源代码所在的相同文件夹中。 但这不起作用。我究竟做错了什么 。请指出。
这是我的代码。
using namespace std;
int main(int argc, char** argv)
{
ifstream infile;
ofstream outfile;
string input="";
string output="";
if( argc == 3 ) {
input = argv[1];
output = argv[2];
cout<"arguments right!";
}
else {
cout << "wrong entry format. Parameters not correct";
return 1;
}
infile.open(input.c_str());
if (infile.fail())
cout<<"Could not open file.";
else
cout<<"File opened perfect ";
return 0;
}
答案 0 :(得分:0)
为什么不使用绝对路径。然后无论你如何启动程序,它都可以正常工作。
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
ifstream infile;
ofstream outfile;
string input = "";
string output = "";
string work_dir = argv[0];
//get the directory of program.
work_dir = work_dir.substr(0, work_dir.rfind('\\') + 1);
if( argc == 3 )
{
input = work_dir + argv[1];
output = work_dir + argv[2];
cout << "arguments right!";
}
else
{
cout << "wrong entry format. Parameters not correct";
return 1;
}
infile.open(input.c_str());
if (infile.fail())
cout<<"Could not open file.";
else
cout<<"File opened perfect ";
return 0;
}
此外,您应该将输入和输出文件放在程序目录中。