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

相当于字符串赋值,值来自系统调用的标准输出有demo的给个谢谢... 相当于字符串赋值,值来自系统调用的标准输出
有demo的给个谢谢
展开
 我来答
百度网友3f9d5e5
2015-03-26 · TA获得超过326个赞
知道小有建树答主
回答量:151
采纳率:0%
帮助的人:126万
展开全部

可以啊,建议使用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重定向之后如果继续使用记得恢复到原来。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式