下一段代码返回ss中的空字符串:
#include <string>
#include <iostream>
#include <sstream>
int main () {
std::ostringstream oss;
oss << "Text";
std::stringstream ss;
ss.basic_ios<char>::rdbuf(oss.rdbuf());
std::cout << ss.str() << "\n";
return 0;
}
如何从ss中返回oss中引入的文本?我主要感兴趣的是将std::converting流转换为std::std流。
发布于 2020-04-20 05:12:40
在@NathanOliver的注释之后,我决定使用str()将std::Following流转换为std::str流。
#include <string>
#include <iostream>
#include <sstream>
int main () {
std::ostringstream oss;
oss << "Text";
std::stringstream ss;
ss << oss.str();
std::cout << ss.str() << "\n";
return 0;
}
发布于 2020-04-16 14:03:15
您可以使用受保护的std::streambuf::swap
成员函数,该函数将流缓冲区的内容与另一个流缓冲区的内容交换。
要获得对它的访问,您需要一个派生类:
#include <iostream>
#include <sstream>
struct swapper : std::streambuf {
using std::streambuf::streambuf;
void swap(std::streambuf& rhs) { // public proxy for protected swap
std::streambuf::swap(rhs);
}
};
// casting
void swapbuf(std::ostream& a, std::ostream& b) {
static_cast<swapper*>(a.rdbuf())->swap(*b.rdbuf());
}
int main () {
std::ostringstream oss;
oss << "Text";
std::stringstream ss;
swapbuf(oss, ss);
std::cout << "ss: " << ss.str() << "\n"; // prints Text
}
https://stackoverflow.com/questions/61251053
复制相似问题