从命令行读取文件名并在visual studio中打开

时间:2014-10-10 02:19:03

标签: c++ visual-studio-2010 file filestream iostream

我想打开通过命令行收到的文件名并对其进行一些更改。

我在视觉工作室做。我的输入文件位于我的源代码所在的相同文件夹中。 但这不起作用。我究竟做错了什么 。请指出。

这是我的代码。

 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;
}

1 个答案:

答案 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;
}

此外,您应该将输入和输出文件放在程序目录中。