我尝试通过转换为字符串来打印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;行的输出是"“(空字符串- nothing),我希望它也是5 (即char*类型的output )..
发布于 2018-06-10 19:10:47
引用自http://www.cplusplus.com/reference/fstream/ofstream/rdbuf/
std::ofstream::rdbuf
返回一个指向内部filebuf对象的指针。
但是请注意,这不一定与当前关联的流缓冲区(由ios::rdbuf返回)相同。
https://stackoverflow.com/questions/50782912
复制相似问题