Re: Как преобразовать буфер из файла в массив строк?
От: Bell Россия  
Дата: 05.06.02 07:52
Оценка:
Здравствуйте mrgrin, Вы писали:

M>Недавно занимаюсь С++ и возникла следующая задача, которая не дает двинуться дальше.

M>Я прочитал текстовый файл в строку char* buffer. Теперь мне хотелось бы, как это можно сделать в Паскале, записать построчно этот буфер в массив. Т.е., чтобы по признаку конца строки записывался новый элемент массива.
M>Заранее спасибо.

Тут можно пойти двумя путями
1. Сразу читать файл построчно, и складывать эти строки в контейнер, например так:

std::vector<std::string> aStrings; //Массив строк (кол-во строк заранее неизвестно)
std::string strTmp;
std::ifstream in("Твой файл");
while(getline(in, strTmp))
   aStrings.push_back(strTmp);


2. Считать все в оди большой массив char*, и затем преобразовать его, например так:
char* big_buf;
// заполнение big_buf
std::vector<char*> aStrings;
bool bNewLine = true;
for(int i = 0; i < nBufSize - 1; ++i)
{
   if(big_buf[i] == '\n')
      bNewLine = true;
   else
      bNewLine = false;

   if(bNewLine)
   {
      big_buf[i] = 0;
      aStrings.push_back(&big_buf[i+1]);
   }
}


В последнем варианте не обрабатывается случай, когда подряд встречаются более одного символа начала строки (наличие пустых строк), но добавить нужную функциональность не так уж и сложно.
Надеюсь идея понятна.
Любите книгу — источник знаний (с) М.Горький
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.