станд.:: ostream, не форматирующий символ константы* правильно в первый раз, это используется

Значение по умолчанию CTRL + F10 , но это может быть переопределено. Место для нахождения, что текущие ярлыки - и изменяют их,

Tools
Customize...
Keyboard...
Шоу commands, содержащий:
Отладка. RunToCursor

или

Шоу T ools
O ptions
E nvironment
K eyboard [1 19]
commands, содержащий:
Отладка. RunToCursor

5
задан John Bartholomew 19 November 2009 в 17:07
поделиться

2 ответа

Проблема в том, что вы не должны писать во временный объект потока. Это:

std::ostream(coutbuf) << "blah";

работает не так, как ожидалось, поскольку левый аргумент для operator << () является r-значением. Однако все операторы, перегруженные как свободная функция, принимают неконстантную ссылку на поток в качестве своего левого аргумента:

std::ostream& operator<<(std::ostream&, ...);

Поскольку rvalue не привязывается к неконстантным ссылкам, их нельзя вызвать.

Я подозреваю, что ваша реализация std lib реализует << для const char * как бесплатную функцию и, таким образом, должна вернуться к некоторым << , которые член std :: ostream . Похоже, что в вашей реализации тот, кто выводит любой указатель как void * .

Итог: не пытайтесь записывать во временные объекты потока.

8
ответ дан 14 December 2019 в 01:10
поделиться

Вы не можете использовать такой временный объект потока. Дайте имя временной переменной.

#include <iostream>

int main()
{
    std::streambuf *coutbuf = std::cout.rdbuf();
    std::ostream os(coutbuf);
    os << "test" << ": writing to cout using a separate ostream." << std::endl;
    return 0;
}
1
ответ дан 14 December 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: