我觉得这是一个愚蠢的问题,但我似乎无法弄清楚为什么我的文件没有打开。起初我尝试单独传递文件名,因为它在我的工作目录中,当它不起作用时,我提供了整个路径,这也没有用。我的文件无法在以下代码中打开?这可能是我想念的非常简单的东西,我认为一双新的眼睛可能会有所帮助。
没有错误代码,因为这是运行时错误。当我调试时,我的代码不会超过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);
}
}
}
答案 0 :(得分:3)
如果您在Windows中并且直接从资源管理器中复制并粘贴,那么您可能忘记了转义文件路径中的斜杠,它应该是"c:\\foo\\bar.txt"
。
另外,open()
不会char*
需要f.open(path.c_str())
吗?