Russian Qt Forum

Программирование => С/C++ => Тема начата: Gorthad от Октябрь 08, 2013, 00:00



Название: char vs wchar_t
Отправлено: Gorthad от Октябрь 08, 2013, 00:00
Привет.
Недавно написал прогу на C, в ней происходит обработка (считывание, вывод) файлов особого формата.
Не думал, что из нее выйдет что-то серьезное и многоразовое, но в результате увлекся и уже почти дописал GUI в Qt.
Везде в ней использовались функции стандартной библиотеки stdio.h и все строки были массивами из char'ов, в том числе имена файлов.
Вопрос: насколько это плохо? Имеет ли смысл заменять char'овые функции на wchar_t и функции иже с ними (printf на wprintf и тд)?


Название: Re: char vs wchar_t
Отправлено: kambala от Октябрь 08, 2013, 00:50
думаю лучше вообще полностью перейти на Qt I/O — будет проще портировать на другие системы (размер wchar_t может быть разный).

wide-функции нужны для работы с юникодом (например, если имя или путь к файлу содержит юникод-символы). если такое крайне маловероятно, то ИМХО лучше не заморачиваться — себе дороже выйдет.


Название: Re: char vs wchar_t
Отправлено: Gorthad от Октябрь 08, 2013, 01:37
Спасибо за ответ!
Вопрос: почему выйдет себе дороже? Какие подводные камни?

Насколько вероятно то, что имя файла будет в юникоде? Что будет, если оно в юникоде, а считывать в обычный массив char?


Название: Re: char vs wchar_t
Отправлено: maint от Октябрь 08, 2013, 04:11
я использую только char для имен файлов и не использую функции QT. Поэтому у мнея все всегда открывается при работе с файлом


Название: Re: char vs wchar_t
Отправлено: LisandreL от Октябрь 08, 2013, 09:38
Насколько вероятно то, что имя файла будет в юникоде? Что будет, если оно в юникоде, а считывать в обычный массив char?
А вы переименуйте файл в 文件名.扩张 скажем и проверьте.


Название: Re: char vs wchar_t
Отправлено: silverrulezz от Октябрь 08, 2013, 09:44
Цитировать
Насколько вероятно то, что имя файла будет в юникоде?
Ты сам контролируешь что делает твоя программа. Все зависит от функционала программы. Если ты используешь QFileDialog или его аналоги то вероятность велика.

Цитировать
Вопрос: почему выйдет себе дороже? Какие подводные камни?
Никаких подводных камней нету. Нужно просто заставить себя использовать unicode функции.