Прочитать тектовый файл полностью

 

Доброго времени суток! Прошу подсказать, как реализовать чтение из txt файла текста полностью, а не строками, чтобы при сохранении в string я получал что-то такое - "...\n...\n.." - количество строк в файле заренeе не известно. Ну или, может быть можно как-то сохранять строку с данными "...\n...\n.." без переноса строк в конечном файле, чтобы потом прочитать сразу всё? Заранее спасибо!

 
Grigorii Matsnev:

Доброго времени суток! Прошу подсказать, как реализовать чтение из txt файла текста полностью, а не строками, чтобы при сохранении в string я получал что-то такое - "...\n...\n.." - количество строк в файле заренeе не известно. Ну или, может быть можно как-то сохранять строку с данными "...\n...\n.." без переноса строк в конечном файле, чтобы потом прочитать сразу всё? Заранее спасибо!

Вырезал кусок из работающего советника. Суть в том, что текстовый файл открывается как бинарный.

// Вернет в Me пришедшее сообщение и в Kod его код, если оно есть в файле Si.
// 0 - его нет, 2 - пришло, -1 - сбой.  Если взято сообщение, файл опустошает
int NewMes() {
int Le, iEr, k;
string S;
fisi=FileOpen(SoFIn, FILE_BIN|FILE_READ|FILE_WRITE|FILE_ANSI,0,CP_ACP); // Монопольно откроется - значит, записан полностью
iEr=iErr(); // А может быть, в буфере ОС уже есть длина, но нет содержимого
if (fisi<0) return (0); // Файла нет или переписывается. Считаем на следующем шаге
Le=FileSize(fisi); // ERR_INVALID_FUNCTION_PARAMVALUE (4051)
if (iErr()!=0) {FileClose(fisi); return (0);} // Попали на момент записи. Считаем на следующем шаге
if (Le<4) {FileClose(fisi); return(0);} // Файл пуст или слишком мал. Ничего не появилось
Kod="00";
NumZ=0;
for (k=0;k<=99;k++) { // Ждем, когда в буфере ОС появится содержимое
  S=FileReadString(fisi,Le); iEr=iErr();
  if ((iEr==0) && (StringLen(S)==Le)) break;
  FileSeek(fisi,0,SEEK_SET); iEr=iErr(); 
  if (iEr!=0) {FileClose(fisi); ToProt("^99 Сбой Seek в файле "+SoFIn+", err="+IntS(iEr)); return(1);}
  Sleep(10);
  }
if ((iEr!=0) || (StringLen(S)!=Le)) {FileClose(fisi);
  ToProt("^99 Сбой чтения из файла "+SoFIn+", err="+IntS(iEr)+", Len="+IntS(Le)+", S='"+S+"'"); return(Er(-1));}
 

В бинарном режиме прочитать файл в массив char и преобразовать массив в строку. Если файл ANSI.

   char a[];
   int h=FileOpen("1.txt",FILE_BIN|FILE_READ);
   FileReadArray(h,a);
   FileClose(h);   
   string s=CharArrayToString(a);