这是我第一次遇到这个问题所以我不知道如何修复它。 编辑:没关系。看起来像我的构造函数中的一个错误导致这种情况以某种方式发生
#include <iostream>
#include <fstream>
#include "graphm.h"
using namespace std;
int main() {
ifstream infile1("data31.txt");
for(;;){
GraphM G;
G.buildGraph(infile1);
if (infile1.eof())
break;
}
void GraphM::buildGraph(ifstream& infile){
int i = 0;
infile >> i; //it crashes here
}
我的文字文件只有一行: 5
答案 0 :(得分:4)
问题可能与文件未打开有关。您应该始终检查文件是否已成功打开:
ifstream infile1("data31.txt");
if ( !infile1 )
{
// Failed to open data31.txt
return -1;
}
或者您可以使用显式函数而不是重载operator!
if ( infile1.fail() )
{
return -1;
}
答案 1 :(得分:1)
你得到的错误是什么?通过检查infile.is_open()函数确保文件已打开。你可以在这里找到示例代码:
http://www.cplusplus.com/reference/iostream/ifstream/is_open/
您也可以查看此主题:
Using C++ ifstream extraction operator>> to read formatted data from a file
它有一个使用ifstream的有用说明。
答案 2 :(得分:0)
代码可能出现的问题:
1. Unopenable file/unopened file
2. Unopenable file/unopened file
3. Unopenable file/unopened file
4. Unopenable file/unopened file
如何解决这个问题?关注@MaximSkurydin的代码。