我在尝试读取文本文件的行并将它们放入程序中的相应字符串时遇到此seg-fault。
if(infile.is_open()){
//calculating the number of lines
while(getline(infile, line)){
numberoflines++;
}
//Find start of the file and start reading
infile.clear();
infile.seekg(0, ios::beg);
if(!infile.eof()){
//Allocate an array of strings, each string contains a line from the input file
string STRING[numberoflines];
int i = 0;
while(getline(infile, STRING[i])){
cout<<STRING[i]<<endl;
i++;
}
}
infile.close();
}
程序实际打印出每一行,但在提供较大的文本文件时以seg-fault结束。
答案 0 :(得分:0)
您不应该两次读取文件(一次是行数,一次是行本身)。正如其他人所建议的那样,使用std :: vector非常适合。这是一个例子:
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include <iterator>
int main( int argc, char ** argv )
{
if( argc != 2 )
return 1;
std::vector< std::string > lines;
std::ifstream infile( argv[1] );
if( infile.is_open() )
{
std::string buffer;
while( std::getline( infile, buffer ).good() )
lines.push_back( buffer );
inflie.close();
}
size_t numberoflines = lines.size();
std::ostream_iterator< std::string > out( std::cout, "\n" );
std::copy( lines.begin(), lines.end(), out );
}