Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перегрузить оператор вывода в строку 
V
    Опции темы
mes
Дата 3.4.2011, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(volatile @  3.4.2011,  18:17 Найти цитируемый пост)
по крайней мере он отвечал на первый вопрос:

ну это не признак хорошести.. тем более у меня большое сомнение, что этот первый вопрос отражает действительную проблему, ради которой была создана тема smile

Добавлено @ 19:22
тем более что второй вопрос оправдывает мои сомнения 
Цитата(boostcoder @  3.4.2011,  11:56 Найти цитируемый пост)
не понимаю, что в следующем коде не так?..
 
Код

print(std::string() << "ab, " << 23 << ", " << 3.14159265 );


 smile 


Это сообщение отредактировал(а) mes - 3.4.2011, 19:22


--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 3.4.2011, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  3.4.2011,  19:06 Найти цитируемый пост)
она возвращает новую строку, как результат объединения/слияния двух аргументов..

ну да. но как результат - получаем что нужно.
PM WWW   Вверх
volatile
Дата 3.4.2011, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Ну в принципе можно оставить оба, они друг другу не мешают  smile 
Но все же первый я возьму себе в копилку.
PM MAIL   Вверх
mes
Дата 3.4.2011, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  3.4.2011,  18:24 Найти цитируемый пост)
ну да. но как результат - получаем что нужно. 

оно разное и пример с print _подверждает_ это.. smile

Цитата(volatile @  3.4.2011,  18:28 Найти цитируемый пост)
Но все же первый я возьму себе в копилку. 

только осторожней  smile 


--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 3.4.2011, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  3.4.2011,  19:44 Найти цитируемый пост)
оно разное

что разное? не въезжаю...
PM WWW   Вверх
mes
Дата 3.4.2011, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Код

str << 1
str && 2


в случае 1 : rvalue записывается в lvalue str
в случае 2:  из двух rvalue получается третья rvalue

ну и соответственно разные применение и требования.. 




--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 8.4.2011, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



реализовал так:
Код

#include <string>
#include <iostream>
#include <boost/format.hpp>

struct log_formater {
   log_formater(const std::string& format, const char* file, size_t line, const char* function)
      :_format(format),
      _file(file),
      _line(line),
      _function(function)
   {}

   ~log_formater() {
      std::cout << _file << "(" << _line << "): " << _function << "| " << _format.str() << std::endl;
   }

   template <typename T>
   log_formater& operator% (const T& value) {
      _format % value;
      return *this;
   }

private:
   boost::format _format;
   const char* _file;
   size_t _line;
   const char* _function;
};

#define LOG_MESSAGE(str) log_formater(str, __FILE__, __LINE__, __PRETTY_FUNCTION__)

void function(std::pair<std::vector<std::string>, int>& arg) {
   LOG_MESSAGE("message arg1-%1%, arg2-%2%") % 34 % 43;
}

int main() {
   LOG_MESSAGE("simple log message");
   std::pair<std::vector<std::string>, int> farg;
   function(farg);
}

http://liveworkspace.org/code/f43be67a2474...750755644358655

всем спасибо.

PM WWW   Вверх
mes
Дата 8.4.2011, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  8.4.2011,  20:13 Найти цитируемый пост)
реализовал так:

вот вроде то же самое, но меньше строчек кода :
http://liveworkspace.org/code/e5e3276a6674...1f19c76e6a91b7d
smile


--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 8.4.2011, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



mes, да, это получше будет. и по быстрее. спасибо smile 
PM WWW   Вверх
mes
Дата 8.4.2011, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата("boostcoder")

за оптимизацию кода+++

ну оптимизации то там как таковой и не было, просто выкинил все лишнее, что Вы туда впихнули  smile 



--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 8.4.2011, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



кода меньше + результат тот же = оптимизация. по любому ;)

PM WWW   Вверх
mes
Дата 9.4.2011, 15:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  8.4.2011,  22:19 Найти цитируемый пост)
кода меньше + результат тот же = оптимизация. по любому ;)

как по мне, то устранение_пессимизации   и оптимизация разные хотя и смежные понятия..  smile 
но в любом случае это не тема для спора smile


--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 8.5.2011, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



попробовал скомпилить код с отключенной отладкой, и улыбнулся.
все что после закрывающейся скобки макроса, остается ведь smile 
Код

#ifndef DISABLE_LOGGING
#define LOG_MESSAGE(str) _тут_всякий_код_инлайнящийся_в_код_
#else
#define LOG_MESSAGE(str)
#endif


нужно и аргументы в макрос писать. а для этого нужен variadic_macros. разбираюсь...
PM WWW   Вверх
mes
Дата 9.5.2011, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  8.5.2011,  18:22 Найти цитируемый пост)
 с отключенной отладкой, и улыбнулся.

 smile  smile  smile  smile 

Цитата(boostcoder @  8.5.2011,  18:22 Найти цитируемый пост)
а для этого нужен variadic_macros. разбираюсь... 

а если так : http://liveworkspace.org/code/85de8371fccd...8001c0d182d26ba ?


--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0643 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.