Название: 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 функции. |