@Sratimon

Вывод в edit текста из .txt файла как?

Изучаю WinApi c++ и стоит следующая задача надо вывести в edit то что лежит в текстовом файле
табуляция, пробелы выводятся но переход на следующую строчку нет
char tt[1024];  
ifstream ifs(nameFile);//открываю файл 
string s;
s.assign((istreambuf_iterator<char>(ifs.rdbuf())), istreambuf_iterator<char>());//получаю весь текст 
strcpy( tt, s.c_str() );//string в char
ifs.close(); //закрываю файл
//edit
text = CreateWindow("edit","edit", WS_GROUP |
        WS_CHILD | WS_VISIBLE | ES_MULTILINE,
                    160,0,600,600,hWnd,(HMENU)101,
                    (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE),NULL);

//запись в edit
SetWindowText(text, tt);

В консоле все нормально !
И есть ли возможность записать весь текст из файла сразу в char
  • Вопрос задан
  • 2222 просмотра
Пригласить эксперта
Ответы на вопрос 4
@MiiNiPaa
SetWindowText ожидает перевод строки размером в 2 байта(0x0D 0x0A). ifstream превратит 2хбайтовый перевод строки в однобайтовый для внутреннего хранения. Можете прочесть файл как двоичный: ifstream ifs(nameFile, "ios::binary");
Ответ написан
Комментировать
drem1lin
@drem1lin
чуть программист, чуть чуть админ...
вы пишете про WinApi, а сами используете потоки) для WinApi надо делать CreateFile, ReadFile, и потом SetWindowText и все сразу будет как надо
Ответ написан
RiseOfDeath
@RiseOfDeath
Диванный эксперт.
Или, как вариант, заменять \n на std::endl (ибо std::endl обязан быть принятым для данной системы символом (символами) конца строки), ну или вручную заменять \n на \r\n
Ответ написан
Комментировать
@Sratimon Автор вопроса
Всем спасибо за ответ но я нашел другое решение
Я читаю файл построчно и в конце каждой строки добавляю \r\n
#include <fstream>
char tt[1024]; // сюда запишем весь текст  
int readText(char nameFile[80]){ // принимает название файла 
    memset(tt, 0, sizeof(tt)); // чистим tt[]
    char buf[180]; // тут будет лежать строка из файла 
    char buf2[4]="\r\n"; // то что добавляем в конце файла 
    FILE *fp; //буфер файла
    fp = fopen(nameFile, "r"); // открываем файл 
     while (! feof(fp)){ // читаем файл построчно  пока он не закончиться 
          fgets(buf, 180,fp);  // записываем  строку в buf
          strcat(buf,buf2); // добавляем в конце \r\n 
          strcat(tt,buf); // записываем строку туда где будет лежать весь текст 
      }
        fclose(fp); // закрываем файл 
}

Что скажите о том что я сделал ?
Как это работает меня вполне устраивает
Кроме одного как сделать что бы функция вернула tt что бы не делать его глобальным ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы