@Loligan

Сохранение и загрузка бинарных файлов с русским текстом Qt в string. Как?

Добрый день. Суть у меня такова. Я сохраняю объект класса со строками string (и да, переделать в QString нельзя, т.к. не мне решать) который ввожу через LineEdit в окне проекта который позже сохраняю через бинарный файл. Так же загружаю оттуда же куда и сохраняю, загружаю всё в объект, после чего вывожу данные объекта в label. Как сохранять и загружать русский текст? Сохраняю и загружаю через перегрузку операторов класса.
  • Вопрос задан
  • 501 просмотр
Решения вопроса 1
Nipheris
@Nipheris Куратор тега C++
Переделывать строки с std::string на QString может быть и не нужно: достаточно всем договориться, что в std::string может быть UTF-8 текст. Тогда уже нельзя полагаться на соответствие символ == элемент_string-а, т.е. у вас std::string будет хранить уже не символы, а байты (!) строки, и size() будет уже показывать количество байт. Если вас нужно только сохранять/загружать, то это как раз вам подойдет. Затем, чтобы запихнуть в контрол, делаете в нужных местах str.toUtf8() и QString::fromUtf8(...) и счастье.
Если вам нужно обрабатывать текст посимвольно, например вырезать подстроку, то без поддержки юникода вам ничего не сделать. В этом случае, либо юзайте QString в местах обработки текста, либо подключайте ICU.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
Либо используйте только ASCII (соответственно декодировать надо наверное), либо используйте wstring.
Ответ написан
Ваш ответ на вопрос

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

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