Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
1

Не переносятся строки при чтении файла

14.08.2012, 19:23. Показов 1301. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Сразу к делу. Создаю программно edit, затем зная путь к файлу, считываю данные и вывожу в edit. Проблема в том, что там не переводятся каретка на следующие строки, хотя символ 13 присутствует.
Код такой:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("EDIT"), 0, WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | WS_TABSTOP | ES_WANTRETURN | ES_OEMCONVERT | ES_MULTILINE   | ES_AUTOVSCROLL, 0, 40, 633, 223, hWnd, 0, hInst, 0);
//SendMessage(hEdit,EM_REPLACESEL, TRUE,(LPARAM)L"A\r\nB\r\nC");//тут все в порядке, буквы идут в разных строках
 
ifstream file(FullPath, std::ios::binary); string tempStr;
string line;
while (getline(file, line)) {
    try {
        tempStr+=line;
        //tempStr+='\r\n';//способ не работает, хотя 13 в нужном месте появляется
        } catch (...) {
        file.close();
        throw;
        }
    }
tempStr+='\0';//заканчиваем текст
file.close();
int length = tempStr.size();
if (length!=0)
{
    wchar_t *ptr2 = new wchar_t [length];
    MultiByteToWideChar(CP_ACP, 0, tempStr.c_str(), -1, ptr2, length);
    //ptr2[12]=13;//так тоже пытался попробовать перевод каретки, но способ не помог
    SetWindowText(hEdit, ptr2);
    delete [] ptr2;
}
Скрин с дебага


Проблема в том, что все символы идут подряд, хотя есть символ перехода которые корректно с читаны с файла. Как исправить это?
Миниатюры
Не переносятся строки при чтении файла  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.08.2012, 19:23
Ответы с готовыми решениями:

Попустить текстовые строки при чтении чисел из файла
у меня есть два файла в таком виде Список 1 2 3 ---- и 1 2 3

Перевод строки при чтении из файла
Всем привет в LinkLabel берется текст из файла, но у него есть ограничение по ширине, при котором...

Пропуск строки при чтении из файла
Здравствуйте! Подскажите пожалуйста, существует ли какая-нибудь функция, позволяющая пропустить...

При чтении из файла появляются фантомные строки
Добрый вечер. При использовании BufferedReader с аргументом виду FileReader каждое второе чтение...

6
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32955 / 21273 / 8168
Регистрация: 22.10.2011
Сообщений: 36,542
Записей в блоге: 8
14.08.2012, 20:54 2
Цитата Сообщение от titans2011 Посмотреть сообщение
//tempStr+='\r\n';//способ не работает, хотя 13 в нужном месте появляется
Способ
C++
1
tempStr+="\r\n"; // Кавычки, а не апострофы, ибо у тебя строка, а не один символ
не хочешь попробовать?
0
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
14.08.2012, 21:24  [ТС] 3
Попробовал, все равно не переносятся строки.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32955 / 21273 / 8168
Регистрация: 22.10.2011
Сообщений: 36,542
Записей в блоге: 8
14.08.2012, 21:47 4
Очень странно:
Миниатюры
Не переносятся строки при чтении файла  
0
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
14.08.2012, 21:59  [ТС] 5
Может это у меня студия такой "эффект" дает?
Хотя стоп. У меня функция getline(file, line) сразу одним скопом выдала содержимое файла, где перенесены по строкам. Вот кидаю текстовый файлик, которые не открывается по строкам. У вас он интересно тоже не откроется?
Вложения
Тип файла: txt Texbus.txt (91 байт, 5 просмотров)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32955 / 21273 / 8168
Регистрация: 22.10.2011
Сообщений: 36,542
Записей в блоге: 8
14.08.2012, 22:17 6
Сорри, не пересобрал программу. Да, этот файл не открывается. Но посмотри внимательно: переносы в файле *nix-овые, только CR, у меня было CR+LF.
Миниатюры
Не переносятся строки при чтении файла  
0
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
14.08.2012, 22:40  [ТС] 7
И как же это побороть? Ведь тот же Notepad+ спокойно это открывает.

Добавлено через 15 минут
решил вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
while (getline(file, line)) {
                                        try {
                                            tempStr+=line;
                                            //tempStr+="\r\n";
                                        } catch (...) {
                                            file.close();
                                            throw;
                                        }
                                    }
                                    //tempStr[50]='\r\n';
                                    tempStr+='\0';
                                    file.close(); 
                                    string tempStr2; 
                                    for (int i=0; i<tempStr.size(); i++)
                                        {
                                        if (tempStr[i]==13)
                                            tempStr2+="\r\n";
                                        else
                                                tempStr2+=tempStr[i];
                                        }
Спасибо.
0
14.08.2012, 22:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.08.2012, 22:40
Помогаю со студенческими работами здесь

При чтении файла нет разделения на строки
Я написал прогу,которая при перетаскивании текстового файла читает его содержимое,а при...

Удаление переноса строки при чтении из файла
Я считываю строчку с помощью readlines При выводе на кран он выдает строчку + перенос строки Как...

Непонятный символ в конце строки при чтении файла
всем привет) подскажите, пожалуйста:) когда я считываю строку из файла(txt), то в конце появляется...

При чтении txt-файла достать содержимое второй строки
Собственно, сабж. Есть текстовый файл. Как можно прочитать конкретно вторую, третью или четвёртую...

Символ перевода строки при чтении текста из файла не воспринимается как таковой
Привет всем. Есть такая ситуация: читаю текст, и умышленно вставляю перевод строки &quot;\n&quot;, чтобы...

Как убрать символ новой строки (\n) при чтении строк из файла pascal>
Здравствуйте, дорогие программисты! Помогите сделать программу, которая будет считывать текст из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru