![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
всем доброго дня.
есть надобность выводить не в поток вывода, а в строку. обычно вывожу в std::stringstream и методом str() получаю строку. но мне интересно, а что можно сделать, чтоб не перегружать операторы вывода для каждого типа? чтоб использовать так:
какие варианты есть? спасибо Это сообщение отредактировал(а) boostcoder - 3.4.2011, 12:35 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
решение в лоб :
http://liveworkspace.org/code/6ee83fd38547...6351f77f387a06a |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
mes, спасибо.
я рассматривал такой вариант, но почему-то подумал что оператор вывода в таком случае должен возвращать stringstream& и недодумал.. поспешил с вопросом. вопрос закрыт. Добавлено @ 12:58 mes, еще такой вопрос. не понимаю, что в следующем коде не так?..
http://liveworkspace.org/code/d1e3007290cd...83cfc64321da742 Добавлено @ 13:00 ведь результат выражения "std::string() << "ab, " << 23 << ", " << 3.14159265" - строка Это сообщение отредактировал(а) boostcoder - 3.4.2011, 13:02 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
грубо : rvalue не может быть присвоена не константной ссылке.. http://liveworkspace.org/code/ed9df98b4227...bfa22f845980c07 Добавлено через 46 секунд а зря, не очень удачное решение.. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
что с этим решением не так? есть варианты получше? ;) |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
для получше надо подумать.. но должно быть.. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
вот так имхо по-безопасней, да и по логичней будет :
http://liveworkspace.org/code/d8dde9cde239...30fa2072feebc34
|
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
a какой оператор лучше отражает концепцию concat ? |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
<< ? так посмотрите на действие функции.. она не делает _вывода_ |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Добавлено @ 18:59 вместо && можно & или , если удобнее.. Это сообщение отредактировал(а) mes - 3.4.2011, 19:09 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
нет, она возвращает новую строку, как результат объединения/слияния двух аргументов.. Добавлено через 43 секунды первоначальная строка остается неизмененной.. Добавлено через 4 минуты и 57 секунд именно возвращение ссылки в первоначальном коде и было слабым местом реализации .. |
|||
|
||||
| volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
mes, мне ваш первый вариант больше понравился
по крайней мере он отвечал на первый вопрос:
|
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |