C++ 在qt中使用ifstream打开文件

C++ 在qt中使用ifstream打开文件,c++,qt,istream,C++,Qt,Istream,我的搭档在一个文本编辑器中为我的一个项目写了一堆代码,当我运行代码时,它工作得非常好。。。。。 现在我已经将所有代码复制并粘贴到qt creator中,我遇到了一个问题 stringstream ss; string line; ifstream myfile; myfile.open("Instructors.txt"); if (myfile.is_open()){

我的搭档在一个文本编辑器中为我的一个项目写了一堆代码,当我运行代码时,它工作得非常好。。。。。 现在我已经将所有代码复制并粘贴到qt creator中,我遇到了一个问题

 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;
stringstreamss;
弦线;
ifstreammyfile;
myfile.open(“Instructors.txt”);
如果(myfile.is_open()){
while(getline(myfile,line)){

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

然后抓住他们,所有这些都是:

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;
}
试试看
{
ifstream myfile(“Instructors.txt”);
异常(ifstream::failbit | ifstream::badbit);
while(getline(myfile,line))
{

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

仔细检查工作目录,很可能它位于生成文件夹中(可执行文件被丢弃的地方)


在QtCreator中,您可以通过转到Project并选择run来修复此问题;在那里,您可以设置工作目录

它没有给我这样的文件或目录错误,这让我感到困惑,因为我首先厌倦了简单地将文件复制并粘贴到我的工作区中,但之后没有工作,在qt中创建了新的文本文件并复制并粘贴了内容结束后,它仍然无法正常工作…然后检查您的可执行文件的工作目录中是否有该文件…如何执行取决于您的构建/制作系统…这两种方法之间的输出是否不同?在qt中,我右键单击工作目录以添加新文件,然后单击文本文件,这会将其添加到其他_文件中,因此hen试图打开“其他文件/讲师”这似乎不起作用,但我发现它不可能不在我的工作中directory@AndrewOtsuki你读了吗?我在adrianos的帖子上的第一条评论我尝试了这个,不幸的是,我没有注意到。我实际上找不到这个的构建文件夹?我所有其他的qt项目构建文件夹就在我的工作区旁边
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;
}