Я хочу, чтобы написать функцию, которая выводит что-то к ostream
, который передается в и возвращает поток, как это:Функция, которая печатает что-то в std :: ostream и возвращает std :: ostream?
std::ostream& MyPrint(int val, std::ostream* out) {
*out << val;
return *out;
}
int main(int argc, char** argv){
std::cout << "Value: " << MyPrint(12, &std::cout) << std::endl;
return 0;
}
Было бы удобно, чтобы напечатать значение, как это и встроить вызов функции в вывода, как я сделал в main()
.
Это не работает, однако, и печатает это:
$ ./a.out
12Value: 0x6013a8
Нужный результат будет таким:
Value: 12
Как я могу это исправить? Нужно ли мне определять operator<<
?
ОБНОВЛЕНИЕ: Уточнено, каков будет желаемый результат.
UPDATE2: Некоторые люди не понимали, почему я бы напечатал такое число, используя функцию, а не печатать ее напрямую. Это упрощенный пример, и на самом деле функция печатает сложный объект, а не int
.
Почему вы передаете поток через указатель, а не через выделение? – 2009-07-06 16:38:31
Возможно, он прочитал руководство по стилю Google и купил в этом «не использовать неконстантные параметры ссылки», который идет вокруг. –
Кроме того, в чем смысл не делать 'cout <<" Значение: "<< 12;' like @Neil рекомендует? Это, кажется, самое прямое решение. –