Я попытался напечатать значение, существующее в переменной ostream, путем преобразования в строку, а затем напечатать строку вместо аргумента ostream.
Но это не работает.
Это мой код:
#include <iostream>
#include <cassert>
#include <cstring>
#include <sstream>
using std::ostream;
typedef std::basic_stringstream<char> stringstream;
class X {
public:
int y;
};
std::ostream& operator<<(std::ostream& os, const X x) {
return os << x.y;
}
int main() {
X x;
x.y = 5;
stringstream ss;
ostream output(nullptr);
output << x;
ss << output.rdbuf();
std::string myString = ss.str();
std::cout << x << std::endl; // 5
std::cout << "myString.c_str() :" << std::endl;
std::cout << myString.c_str() << std::endl; // nothing.
}
Как я могу исправить эту проблему, чтобы получить myString.c_str()
соответствующий вывод?
вывод в строке std::cout << myString.c_str() << std::endl;
равен "" (пустая строка - ничего), и я хочу, чтобы он тоже был 5
(а именно output
в типе char*
) ..