将cout的输出内容重定向到字符串变量中,如下:
#include <iostream>
#include <map>
#include <sstream>
#include <string>
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 << std::endl;
std::cout << "Hello, World!" << std::endl;
return 0;
}
此时,变量s中内容为: "123456789 abc"
将s内容输出: