我想知道,是否有另一种方法可以读出一个大文件
Hans //name
Bachelor // study_path
WS10_11 //semester
22 // age
不是这样的:
fout >> name; //string
fout >> study_path; //string
fout >> Semester ; //string
fout >> age; //int
当我的文件变成超过 20 行时,我应该制作 20 多个 fouts 吗?
还有别的办法吗?
最佳答案
您可以定义一个类来保存每个人的数据:
class Person {
public:
std::string name;
std::string study_path;
std::string semester;
unsigned int age;
};
然后您可以为该类定义流提取运算符:
std::istream & operator>>(std::istream & stream, Person & person) {
stream >> person.name >> person.study_path >> person.semester >> person.age;
return stream;
}
然后你就可以像这样读取整个文件:
std::ifstream file("datafile.txt");
std::vector<Person> data;
std::copy(std::istream_iterator<Person>(file), std::istream_iterator<Person>(),
std::back_inserter(data));
这将读取整个文件并将所有提取的记录存储在 vector
中。如果事先知道要读取的记录数,可以在读取文件前调用data.reserve(number_of_records)
。因此, vector 将有足够的内存来存储所有记录而无需重新分配,如果文件很大,这可能会加快加载速度。
关于c++ - 读出一个大的txt文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4177680/