我通过一次读取文件来查找它包含的行数,然后再次读取它,这样我就可以将每行的一些数据存储在一个数组中。有没有更好的方法来读取文件两次而不是关闭并再次打开?这是我得到的,但恐怕效率不高。如何在同一行中两次读取同一个文件
int numOfMappings = 0;
ifstream settingsFile("settings.txt");
string setting;
while(getline(settingsFile, setting))
{
numOfMappings++;
}
char* mapping = new char[numOfMappings];
settingsFile.close();
cout << "numOfMappings: " << numOfMappings << endl;
settingsFile.open("settings.txt");
while(getline(settingsFile, setting))
{
cout << "line: " << setting << endl;
}
即使你使用C++,你可以使用'vector'而不是数组:http://www.cplusplus.com/reference/vector/ – Patashu 2013-05-06 07:00:33
为什么不使用'vector <>'来存储信息当你第一次从文件中读取它时 - 矢量会自动调整大小,因为它需要更多的内存。 – 2013-05-06 07:01:32
看看[这里](http://en.cppreference.com/w/cpp/io/basic_ostream/seekp)。实际上可能[这里](http://en.cppreference.com/w/cpp/io/basic_istream/seekg)。 – ChiefTwoPencils 2013-05-06 07:04:07