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);
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Доброго времени суток! Прошу подсказать, как реализовать чтение из txt файла текста полностью, а не строками, чтобы при сохранении в string я получал что-то такое - "...\n...\n.." - количество строк в файле заренeе не известно. Ну или, может быть можно как-то сохранять строку с данными "...\n...\n.." без переноса строк в конечном файле, чтобы потом прочитать сразу всё? Заранее спасибо!