在qt中使用ifstream发出打开文件

时间:2013-11-05 10:34:24

标签: c++ qt istream

我的合作伙伴在文本编辑器中为我的一个项目编写了一堆代码,当我运行代码时,它完美运行..... 现在我已将所有代码复制并粘贴到qt创建者中,并且我有一个问题

 stringstream ss;
            string line;
            ifstream myfile;
            myfile.open("Instructors.txt");
            if (myfile.is_open()){
                while (getline(myfile,line)){
                    ss << line << ", ";
                }
                myfile.close();
            }
            else cout << "bad open" << endl;

上面是我的代码有问题的部分,我可以向你保证所有Instructors.txt确实在正确的文件中,但每次我们的代码到达这一点而不是打开文件我被扔到其他地方“糟糕的开放”为什么会这样?

3 个答案:

答案 0 :(得分:1)

如果没有任何错误代码,很难说它可能是什么,你可以做的是用更有意义的东西(为你和你的客户)改进你的错误信息:

else cout << "Error opening file: " << strerror(errno) << endl;

strerror(请参阅reference)函数返回由errno宏捕获的给定错误代码的字符串。

否则你可以使用异常更多地使用C ++:首先为你的流启用它们:

myfile.exceptions(ifstream::failbit | ifstream::badbit);

然后抓住他们,一起是:

try
{
    ifstream myfile("Instructors.txt");
    myfile.exceptions(ifstream::failbit | ifstream::badbit);

    while (getline(myfile, line))
    {
        ss << line << ", ";
    }

    myfile.close();
}
catch (ifstream::failure e)
{
    cout << e.what() << endl;
}

答案 1 :(得分:0)

尝试重写文件名,可能包含来自不同编码的字符。

答案 2 :(得分:0)

仔细检查工作目录,很可能是在build文件夹中(可执行文件被删除)

在QtCreator中你可以通过转到项目并选择运行来解决这个问题。在那里,您将能够设置工作目录