Ну, возможно, название немного вводит в заблуждение.Все, что я хочу, чтобы вы сделали, это быстро взгляните на следующие два фрагмента и дайте мне несколько советов о том, как максимально повысить производительность, не получая слишком экзотический код.Код необходим для работы только на win32.К сожалению, контейнеры STL сейчас не подходят.
Чтобы прочитать файл ...
bool TextFile::Read(const char *pFilePath)
{
bool bSuccess = false;
std::ifstream oFile(pFilePath, std::ios_base::in);
if(oFile.is_open())
{
std::string stLineNow;
std::size_t siLineLength;
if(this->pLines)
{
this->Clear();
}
this->stFilePath = pFilePath;
oFile.seekg(0, std::ios::end);
this->pLines = new unsigned char *[static_cast<unsigned int> (oFile.tellg())];
oFile.seekg(0, std::ios::beg);
for(this->ulLinesCount = 0; std::getline(oFile, stLineNow).good(); this->ulLinesCount++)
{
siLineLength = stLineNow.length() + 1;
this->pLines[this->ulLinesCount] = new unsigned char[siLineLength];
memcpy(this->pLines[this->ulLinesCount], stLineNow.c_str(), siLineLength);
}
bSuccess = true;
oFile.close();
}
return bSuccess;
}
... и сохранить его ...
bool TextFile::Save(const char *pFilePath)
{
bool bSuccess = false;
if(this->pLines)
{
std::ofstream oFile(pFilePath ? pFilePath : this->stFilePath, std::ios_base::out);
if(oFile.is_open())
{
for(unsigned long ulPosition = 0; ulPosition < this->GetCount(); ulPosition++)
{
oFile << this->Get(ulPosition) << '\n';
}
bSuccess = true;
oFile.close();
}
}
return bSuccess;
}
... и извините за уродливое форматирование.
Заранее спасибо!