我正在编写一个相当简单的代码,将存储在文件中的整数输入到中等大小的数组中,但是在编译和运行代码时,它会给出Segmentation错误,有人可以在我犯错的地方纠正我,代码是
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
using namespace std;
int main()
{
int arr[100000];
ifstream f;
f.open("IntegerArray.txt");
string line;
if (f.is_open())
{
int i=0;
while (f.good())
{
getline(f,line);
arr[i++] = atoi(line.c_str());
}
f.close();
}
else
cout<<"file not open";
return 0;
}
答案 0 :(得分:2)
使用getline()
对文件中的一行进行rading后,应检查该流是否存在潜在错误,例如.fail()
,其中:
如果为流设置了failbit或badbit错误状态标志中的任何一个(或两者),则返回true。
while (f.good())
{
getline(f,line);
if (f.fail()) {
cout << "Corrupt data" << endl; // example output
break;
}
// everything ok, continue with logic
arr[i++] = atoi(line.c_str());
}