关于模板的一个小问题

PonyCheng2019 2013-09-04 11:17:30
代码如下:

#include <fstream>
#include <iostream>
#include <sstream>
#include <string>

using namespace std;

template <typename T1, typename T2>
T1& show(T1 &s, T2 &v1)
{
s << v1;
return s;
}

int main(int argc, char *argv[])
{
string s("Hello, World!");
string desstr;
ostringstream oss(desstr);

show(oss, s);

cout << oss << endl;
cout << oss.str() << endl;
}

为何第一个输出与第二个不一样啊,有谁知道指点一下,谢谢了。
...全文
62 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
PonyCheng2019 2013-09-04
  • 打赏
  • 举报
回复
引用 1 楼 ri_aje 的回复:
这个和模板关系不大。主要是旧版本的 ostringstream 有 operator void*,第一个应该是用了这个,像这样。

    cout << (void*)(oss) << endl;
哦,我知道了。oss是ostringstream对象,要用str()取得字符串的。
PonyCheng2019 2013-09-04
  • 打赏
  • 举报
回复
引用 1 楼 ri_aje 的回复:
这个和模板关系不大。主要是旧版本的 ostringstream 有 operator void*,第一个应该是用了这个,像这样。

    cout << (void*)(oss) << endl;
怎么我加了还是没有输出字符串呢?
ri_aje 2013-09-04
  • 打赏
  • 举报
回复
这个和模板关系不大。主要是旧版本的 ostringstream 有 operator void*,第一个应该是用了这个,像这样。

    cout << (void*)(oss) << endl;

64,685

社区成员

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

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