Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt,Windows] QPair to QString


Автор: dix75 22.1.2010, 09:30
Добрый день!

Мне нужно пару QPair<QString,QString> вывести в QString и внести обратно.

Пытался так.
Код

QPair<QString, QString> pair = {"1","2"};
QDataStream s;
s<<pair;


Но так понятное дело не фурычит.

Автор: andrew_121 22.1.2010, 09:51
Код

QPair<QString, QString> pair = {"1","2"};
QDataStream s;
s<<pair.first << pair.second;

Автор: SABROG 22.1.2010, 09:58
Либо выкиньте свой компилятор, либо пытайтесь компилировать свой код прежде чем выкладывать на форуме:

Код

in C++98 'pair' must be initialized by constructor, not by '{...}'


Код

QPair <QString, QString> pair("Hello", "World");
...
s << pair;

Автор: andrew_121 22.1.2010, 10:06
Цитата(SABROG @  22.1.2010,  09:58 Найти цитируемый пост)
Либо выкиньте свой компилятор, либо пытайтесь компилировать свой код прежде чем выкладывать на форуме:

вообще-то ты правильно говоришь. но вопрос то не в инициализации.

зы
gcc такой код точно не скомпилит. потому я подумал что это студия.

Добавлено через 2 минуты и 15 секунд
Цитата(dix75 @  22.1.2010,  09:30 Найти цитируемый пост)
QPair<QString, QString> pair = {"1","2"};

ах вот почему не компилилось smile  ступил. жесть.

Автор: dix75 22.1.2010, 11:20
Цитата(SABROG @  22.1.2010,  09:58 Найти цитируемый пост)
Либо выкиньте свой компилятор, либо пытайтесь компилировать свой код прежде чем выкладывать на форуме:


Ты не прав у меня все компилится.
А так вообще выводит правильно 
Код

qDebug() <<pair;


Но так почему-то ничего не делает.
Код

s<<pair;


Добавлено через 1 минуту и 46 секунд
Цитата(andrew_121 @  22.1.2010,  10:06 Найти цитируемый пост)
gcc такой код точно не скомпилит. потому я подумал что это студия.

Ну конечно, у меня компилит и без проблем.
Но суть то не в инициализации, а выводе.

Добавлено через 5 минут и 32 секунды
Вообще я пользуюсь ключом  
Код

-std=gnu++0x

И многие вещи из будущего стандарта доступны и в том числе инициализирующий лист.

Автор: andrew_121 22.1.2010, 11:27
Цитата(dix75 @  22.1.2010,  11:20 Найти цитируемый пост)
Ну конечно, у меня компилит и без проблем.

так какой компилятор?
какие типы в паре?

Автор: maxxant 22.1.2010, 11:28
Цитата(dix75 @  22.1.2010,  11:20 Найти цитируемый пост)
А так вообще выводит правильно 
Код

qDebug() <<pair;


Но так почему-то ничего не делает.
Код

s<<pair;




QDataStream & operator<< ( QDataStream & out, const QPair<T1, T2> & pair )

оператор вывода есть, так что остаётся, что QDataStream ни к чему не привязан.

Автор: dix75 22.1.2010, 11:34
Цитата(andrew_121 @  22.1.2010,  11:27 Найти цитируемый пост)
так какой компилятор?

gcc 4.4 идет вместе с qt 4.6
IDE Netbeans

Цитата(andrew_121 @  22.1.2010,  11:27 Найти цитируемый пост)
какие типы в паре?

Цитата(dix75 @  22.1.2010,  09:30 Найти цитируемый пост)
QPair<QString, QString> pair = {"1","2"};


Цитата(maxxant @  22.1.2010,  11:28 Найти цитируемый пост)
QDataStream & operator<< ( QDataStream & out, const QPair<T1, T2> & pair )

Поэтому я и вывожу 
Цитата(dix75 @  22.1.2010,  09:30 Найти цитируемый пост)
QDataStream s;s<<pair;



Цитата(maxxant @  22.1.2010,  11:28 Найти цитируемый пост)
оператор вывода есть, так что остаётся, что QDataStream ни к чему не привязан.

Вот имеено, мне это и нужно

Автор: andrew_121 22.1.2010, 11:53
Цитата(dix75 @  22.1.2010,  11:34 Найти цитируемый пост)
Вот имеено, мне это и нужно 

так QDataStream это же не std::stringstream
укажи объект ввода-вывода

Автор: dix75 22.1.2010, 12:19
Цитата(andrew_121 @  22.1.2010,  11:53 Найти цитируемый пост)
так QDataStream это же не std::stringstreamукажи объект ввода-вывода

Это я знаю.
Мне необходимо из пары в строку переделать и не важно как.

Автор: andrew_121 22.1.2010, 12:42
все значения пары, типа QString. чем плюс не подходит?

Автор: dix75 22.1.2010, 12:52
Цитата(andrew_121 @  22.1.2010,  12:42 Найти цитируемый пост)
все значения пары, типа QString. чем плюс не подходит?

Ну потом её парсить придется.
Мне просто хотелось пару сохранить в строку и извлечь обратно.
В одно действие (может быть есть)


Автор: andrew_121 22.1.2010, 13:01
такого нет по умолчанию.
перегрузи операторы << и >>

Автор: dix75 22.1.2010, 14:45
andrew_121, 
да вот на этом варианте тоже остановился
Спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)