无法在c ++中使用命令行读取.txt文件

时间:2015-06-25 14:00:56

标签: c++ command-line

我正在尝试读取一个类似" -f Filename.txt"的.txt文件。我正在处理的项目要求我在" -f"之后查找文件的名称,用该名称打开文件并将信息提取到矢量字符串中。

除了提取之外,我能做到这一切。由于某种原因,它不会打开文件。

这是我的代码:

int main(int argc, char* argv[])
{
    ifstream file;
    string line;
    vector <string> lines;
    for (int i=0; i<argc; i++)
    {
        if (strcmp( argv[1], "-f" )==0)
        {
            cout << "I am here" << endl;
            std::string argv2 = argv[2];
            cout << argv2 << endl;

            file.open(argv2.c_str());

            if(!file.is_open())
            {
               cout << "file failed to open" << endl;
            }
            while (getline(file, line)) 
            {
                lines.push_back(line);
            }
         }
    }

    for (unsigned int j=0; j<lines.size(); j++)
    {
        cout << lines[j] << endl;
    }  

我的输出是

I am here
test.txt
file failed to open

X3

我真的不明白,因为当file.open(argv2.c_str());代替string filenameargv2工作时{{1}}有效,但它们都是字符串......对吗?

-f test.txt文件位于我的项目文件夹下,test.txt位于Debug文件夹下。我还在程序参数中添加了-f test.txt。

2 个答案:

答案 0 :(得分:3)

我认为您应该将文件重命名为test.txt,而不是-f test.txt

似乎认为-f部分应该被解释为命令,而不是文件名的一部分。

答案 1 :(得分:2)

如果从像Visual Studio这样的IDE运行,那么运行时的默认当前目录是不是可执行文件,而是项目根目录。

将参数更改为-f Debug\test.txt,或将文件移动到项目根目录。