linux下C++ 标准输出重定向问题,能不能将标准输出重定向到我的C++代码中的字符串中

相当于字符串赋值,值来自系统调用的标准输出
有demo的给个谢谢

可以啊,建议使用stringstream 类。

stringstream ss;
cout.rdbuf(ss.rdbuf());

这样标准输出cout就重定向到了ss中,获取ss中的字符串可以用string s=ss.str();这样可以一次性全部取出字符串。

追问

error: aggregate ‘std::stringstream ss’ has incomplete type and cannot be defined|
需要什么头文件吗?
或者你能写一个完整的简单程序吗?谢谢了

追答include <sstream>
include <iostream>
include <string>
using namespace std;
int main()
{
    stringstream ss;
    streambuf* buffer = cout.rdbuf(); //oldbuffer,STDOUT的缓冲区 
    cout.rdbuf(ss.rdbuf());
    cout<<123<<456<<789;
    string s(ss.str());
    cout.rdbuf(buffer); //重新载入STDOUT的缓冲区
}

现在s中保存的就是123456789,cout重定向之后如果继续使用记得恢复到原来。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网