Russian Qt Forum
Ноябрь 26, 2024, 19:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: fstream(QString)  (Прочитано 4860 раз)
ammaximus
Гость
« : Ноябрь 12, 2010, 00:57 »

Занимаюсь переводом программ с Qt2.3 на Qt 4.5
Столкнулся с тем, что файловый поток больше не принимает QString. С чем связано/как бороться?
Код:
#include <fstream>
...
std::fstream f(QString("settings.ini"));
Записан
alexman
Гость
« Ответ #1 : Ноябрь 12, 2010, 01:25 »

Зачем std? Если все равно делаешь переход, может стоит полностью на Qt перейти?
Записан
BlackTass
Гость
« Ответ #2 : Ноябрь 12, 2010, 02:30 »

Я думаю что конкретно в этом случае можно просто заюзать QSettings.
Кстати, почему на 4.5, а не на 4.7?
Записан
BRE
Гость
« Ответ #3 : Ноябрь 12, 2010, 07:18 »

С чем связано/как бороться?
Связано с тем, что QString хранит строки в UNCODE.

Код
C++ (Qt)
#include <fstream>
...
std::fstream f( QString("settings.ini").toLatin1().constData() );
 
« Последнее редактирование: Ноябрь 12, 2010, 07:24 от BRE » Записан
tim474
Гость
« Ответ #4 : Ноябрь 12, 2010, 20:30 »

Цитировать
Связано с тем, что QString хранит строки в UNCODE.
По-моему, немного не так. Конструктор fstream просто не знает про QString, ему надо указатель на массив байтов или std::string. Следовательно, и надо конвертировать Qstring в них.
Записан
BRE
Гость
« Ответ #5 : Ноябрь 12, 2010, 21:22 »

ему надо указатель на массив байтов
Вот этот сарафан методов после QString(...) как раз и конвертирует QString в массив байт и возвращает указатель на этот массив.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.067 секунд. Запросов: 21.