@Loligan

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

Добрый день. Суть у меня такова. Я сохраняю объект класса со строками string (и да, переделать в QString нельзя, т.к. не мне решать) который ввожу через LineEdit в окне проекта который позже сохраняю через бинарный файл. Так же загружаю оттуда же куда и сохраняю, загружаю всё в объект, после чего вывожу данные объекта в label. Как сохранять и загружать русский текст? Сохраняю и загружаю через перегрузку операторов класса.
  • Вопрос задан
  • 499 просмотров
Решения вопроса 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.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект