如何将C++中的cout输出重定向到字符串变量,实现这一功能的长尾是:如何通过C++实现将标准输出cout重定向至字符串变量的复杂操作?
- 内容介绍
- 相关推荐
本文共计174个文字,预计阅读时间需要1分钟。
将cout的输出内容重定向到字符串变量中,可以使用以下方法:
cpp#include #include
int main() { std::string output; std::cout.rdbuf()->pubsetbuf(nullptr, 0); // 清空缓冲区 std::streambuf *backup=std::cout.rdbuf(output.rdbuf()); // 将输出重定向到字符串变量 std::cout << Hello, World!; // 输出到字符串变量 std::cout.rdbuf(backup); // 恢复cout的输出 return 0;}
将cout的输出内容重定向到字符串变量中如下#include#include#include将cout的输出内容重定向到字符串变量中,如下:
#include #include #include #include using namespace std;int main() {stringstream ss;streambuf* buffer = cout.rdbuf(); //oldbuffer,STDOUT的缓冲区cout.rdbuf(ss.rdbuf());cout <<123 <<456 <<789;// ss.str(""); // 可以清空ss的内容cout <<" abc ";string s(ss.str());cout.rdbuf(buffer); // 重置,重新载入STDOUT的缓冲区std::cout <此时,变量s中内容为: "123456789 abc"
将s内容输出:
本文共计174个文字,预计阅读时间需要1分钟。
将cout的输出内容重定向到字符串变量中,可以使用以下方法:
cpp#include #include
int main() { std::string output; std::cout.rdbuf()->pubsetbuf(nullptr, 0); // 清空缓冲区 std::streambuf *backup=std::cout.rdbuf(output.rdbuf()); // 将输出重定向到字符串变量 std::cout << Hello, World!; // 输出到字符串变量 std::cout.rdbuf(backup); // 恢复cout的输出 return 0;}
将cout的输出内容重定向到字符串变量中如下#include#include#include将cout的输出内容重定向到字符串变量中,如下:
#include #include #include #include using namespace std;int main() {stringstream ss;streambuf* buffer = cout.rdbuf(); //oldbuffer,STDOUT的缓冲区cout.rdbuf(ss.rdbuf());cout <<123 <<456 <<789;// ss.str(""); // 可以清空ss的内容cout <<" abc ";string s(ss.str());cout.rdbuf(buffer); // 重置,重新载入STDOUT的缓冲区std::cout <此时,变量s中内容为: "123456789 abc"
将s内容输出:

