|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.09.2021, 11:16 | #1 |
Пользователь
Регистрация: 03.09.2021
Сообщений: 11
|
Проблемы с _setmode
Доброго времени суток!
При написании программы(допустим выводит все файлы в каталоге в консоль) возникла проблема связанная с использованием юникода(если путь в ascii то норм, когда попадаетсмя юникод строка по типу "APEX休息,如何正确地关闭刀" поиск в директории прерывается), а именно utf-8 как единственный выход нашел такой способ: _setmode(_fileno(stdout), _O_U8TEXT); И вроде бы все хорошо, проверил на 7 компах, а вот на 8 он доходя до этой строки просто выходит из программы. Самое интересное что даже GetLastError не проверить т.к. как я понял завершение происходит где то в глубинах _setmode и уже не возвращается из нее. Как понять почему _setmode завершает программу? |
04.09.2021, 09:07 | #2 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
KoTTBarsik, привет. Я так понял, это винда, WinAPI (почему это нигде не указано?)
Никакого кода также не приведено. Поэтому предлагаю: попробуй использовать юникодные версии функций WinAPI (заканчиваются на "W"). И никаких _setmode не понадобится |
06.09.2021, 12:40 | #3 |
Пользователь
Регистрация: 03.09.2021
Сообщений: 11
|
Алексей1153, да все верно это винда.
В программе все функции с постфиксом w например: FindFirstFileW, lstrcmpW, wcout и подобные массив объявлен как wchar_t LocalPath[MAX_PATH] = {L"c:\\*.*"}; Без _setmode программа увидев символы юникода прекращает поиск и завершается, с _setmode же все отрабатывает нормально как и должно быть. Я подозреваю что проблема возможно связана с setlocale. Вот минимальный код: Код:
Даже GetLastError не поймать, т.к. выкидывает раньше. |
08.09.2021, 09:14 | #4 |
Пользователь
Регистрация: 03.09.2021
Сообщений: 11
|
bump
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблемы с IE | brownb | Windows | 3 | 01.06.2017 21:16 |
Проблемы с vba (проблемы создания макросов) | Leojse | Microsoft Office Excel | 4 | 26.12.2013 20:09 |
C++. проблемы с gets() | Skull_psyhothik | Помощь студентам | 1 | 03.10.2012 01:10 |
проблемы с Qt | CodeNOT | Qt и кроссплатформенное программирование С/С++ | 3 | 27.03.2012 12:17 |
проблемы с IE | xakzona | Помощь студентам | 1 | 16.12.2008 21:53 |