如何将ostream的对象 输出为string?(在线等)

無名小伙 2011-10-20 06:06:23
实际上我只能从operator<<的响应结果得到数据,
std::ostream& XXXX::operator<<(std::ostream& out, const YYY& yyy)
{
for (int i = 0; i < yyy.size(); ++i)
out << yyy.name(i) << ": " << yyy.values[i] << std::endl;
return out;
}

这里的yyy.values[x]是一个类的实例,很不方便直接获取到string

1. 我想得到这个输出结果,有人能给出建议吗?


*另外,ostringstream 有public str函数, 但需要转换ostream 为ostringstream。


本人菜鸟,请多多包涵。


...全文
5557 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
無名小伙 2011-10-24
  • 打赏
  • 举报
回复
找到方法了,给大家分享一下吧


......

#include <sstream>

......

std::stringstream ss(std::stringstream::in|std::stringstream::out);

void XXXX::toString(std::string &outputs, const YYY& yyy)
{
for (size_t i = 0; i < yyy.size(); ++i)
ss<< yyy.name(i) << ": " << yyy.values[i] << std::endl;

ss>>outputs;
}

......


大家可以讨论讨论

無名小伙 2011-10-24
  • 打赏
  • 举报
回复
顶一下
hengshan 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 ayuer_cn 的回复:]
引用 16 楼 ayuer_cn 的回复:

引用 15 楼 hengshan 的回复:

这样做,

std::ostringstream os;
YYY y;

os << y;

std::string str = os.str();

就可以了。

ostream 是一个抽象类,不是具体的类。

具体的必须要用ofstream , ostringstrea……
[/Quote]

要输出到终端,直接 std::cout << y;
無名小伙 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 hengshan 的回复:]

这样做,

std::ostringstream os;
YYY y;

os << y;

std::string str = os.str();

就可以了。

ostream 是一个抽象类,不是具体的类。

具体的必须要用ofstream , ostringstream 等
[/Quote]

谢谢,很好,解决了。
無名小伙 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 ayuer_cn 的回复:]

引用 15 楼 hengshan 的回复:

这样做,

std::ostringstream os;
YYY y;

os << y;

std::string str = os.str();

就可以了。

ostream 是一个抽象类,不是具体的类。

具体的必须要用ofstream , ostringstream 等


这里使用os的时候,会在终端输……
[/Quote]

奇怪的是在
std::string str = os.str();
这一句的时候有输出在sdout
無名小伙 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 hengshan 的回复:]

这样做,

std::ostringstream os;
YYY y;

os << y;

std::string str = os.str();

就可以了。

ostream 是一个抽象类,不是具体的类。

具体的必须要用ofstream , ostringstream 等
[/Quote]

这里使用os的时候,会在终端输出,如何设置不让在终端输出?

想直接转存到string里面
hengshan 2011-10-24
  • 打赏
  • 举报
回复
这样做,

std::ostringstream os;
YYY y;

os << y;

std::string str = os.str();

就可以了。

ostream 是一个抽象类,不是具体的类。

具体的必须要用ofstream , ostringstream 等
qq120848369 2011-10-21
  • 打赏
  • 举报
回复
没有办法,谁让你yyy.values[]还是重载的,无解.
無名小伙 2011-10-21
  • 打赏
  • 举报
回复
实际上我只能从operator<<的响应结果得到数据,
std::ostream& XXXX::operator<<(std::ostream& out, const YYY& yyy)
{
for (int i = 0; i < yyy.size(); ++i)
out << yyy.name(i) << ": " << yyy.values[i] << std::endl;
return out;
}
yyy是一个vector

这里的yyy.values[x]是一个类的实例,很不方便直接获取到string
yyy.values[x]里面也重载了operator<<这个函数
接口跟上面函数接口一样,第一个形参是ostream,
我自己写了一个tostring,但不能将ostream 的转换成ostringstream的是吧?

1. 我想得到这个输出结果,有人能给出建议吗?


*另外,ostringstream 有public str函数, 但需要转换ostream 为ostringstream。


本人菜鸟,请多多包涵。
無名小伙 2011-10-21
  • 打赏
  • 举报
回复
真的没办法了?大家可以帮着顶一下
無_1024 2011-10-20
  • 打赏
  • 举报
回复
string.c_str() 将string转化为const char*
taodm 2011-10-20
  • 打赏
  • 举报
回复
当然是先试试.str()啊。反正,ostringstream有这个方法,而显然也只有ostringstream也才需要这个。
cocoabird 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 supermegaboy 的回复:]

YYY的定义是怎样的?
[/Quote]
+
飞天御剑流 2011-10-20
  • 打赏
  • 举报
回复
YYY的定义是怎样的?
机智的呆呆 2011-10-20
  • 打赏
  • 举报
回复
無名小伙 2011-10-20
  • 打赏
  • 举报
回复
如果还没有人回复的话,这贴将沉下去了。。。。
可以帮忙顶一下吧。
無名小伙 2011-10-20
  • 打赏
  • 举报
回复
存在string 的变量里面也行啊
無名小伙 2011-10-20
  • 打赏
  • 举报
回复
我想将ostream转换成 string?题目 上也说了
turing-complete 2011-10-20
  • 打赏
  • 举报
回复
没懂你的意思

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧