为什么我的fstream没有正确打开?

时间:2014-04-28 20:03:44

标签: c++ fstream getline

我觉得这是一个愚蠢的问题,但我似乎无法弄清楚为什么我的文件没有打开。起初我尝试单独传递文件名,因为它在我的工作目录中,当它不起作用时,我提供了整个路径,这也没有用。我的文件无法在以下代码中打开?这可能是我想念的非常简单的东西,我认为一双新的眼睛可能会有所帮助。

没有错误代码,因为这是运行时错误。当我调试时,我的代码不会超过if(f.is_open())行。我错过了什么吗?我的路径应该是正确的,因为我直接从文件资源管理器中复制粘贴它。

欢迎提供任何帮助,我们也将不胜感激。

注意:我的substr逻辑可能有误,但不要担心代码的这一部分。

 void QuizKey::readFromFile(string path)
    {

        fstream f;
        f.open(path);

        string line;

        if(f.is_open())
        {
            while(getline(f, line))
            {
                int periodLocation = line.find(".");
                int firstPipe = line.find("|");
                int secondPipe = line.find("|", firstPipe);
                int thirdPipe = line.find("|", secondPipe);

                AnswerSet set;
                set.answer = line.substr(periodLocation + 1, firstPipe - periodLocation - 1);
                set.two = line.substr(firstPipe + 1, secondPipe - firstPipe - 1);
                set.three = line.substr(secondPipe + 1, thirdPipe - secondPipe - 1);
                set.four = line.substr(thirdPipe + 1, line.length() - thirdPipe - 1);

                key.push_back(set);
            }
        }
    }

1 个答案:

答案 0 :(得分:3)

如果您在Windows中并且直接从资源管理器中复制并粘贴,那么您可能忘记了转义文件路径中的斜杠,它应该是"c:\\foo\\bar.txt"

另外,open()不会char*需要f.open(path.c_str())吗?