hdqqq

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  35 随笔 :: 0 文章 :: 104 评论 :: 0 Trackbacks
//在程序运行的时候经常需要显示调试信息,标准c中经常使用
//printf和spritf,还有MFC中的TRACE函数,
//都是要自己写格式字符串,特别是
//sprintf还要自己建缓冲区等,因此可以用标准c++的
//stringstream 和模板来构建无需格式字符串的函数,
//并且可以自行进行扩充的


#include <sstream>

template 
<class a>
std::
string make_str(a pa)
{
  std::
string ret;
  stringstream ls;
  ls 
<< pa << endl;
  ret 
= ls.str();
  return ret;
}


template 
<class a, class b>
std::
string make_str(a pa, b pb)
{
  std::
string ret;
  stringstream ls;
  ls 
<< pa << " " << pb << endl;
  ret 
= ls.str();
  return ret;
}


template 
<class a, class b,class c>
std::
string make_str(a pa, b pb,c pc)
{
  std::
string ret;
  stringstream ls;
  ls 
<< pa << " " << pb << " " << pc << endl;
  ret 
= ls.str();
  return ret;
}

//可以按需要扩充
//用起来可以这样
cout 
<< make_str("当前记数"100).c_str();
posted on 2007-07-31 10:51 hdqqq 阅读(1557) 评论(5)  编辑 收藏 引用 所属分类: c/c++

评论

# re: 显示字符串的函数 2007-07-31 11:49 梦在天涯
cout应该可以格式字符串的啊!  回复  更多评论
  

# re: 显示字符串的函数[未登录] 2007-07-31 13:11 hdqqq
这些函数的目的只是为了生成字符串,至于是显示出来还是写入文件,是看需求的,功能就象cstring 的format 成员函数.  回复  更多评论
  

# re: 显示字符串的函数 2007-08-01 23:47 nick
不能和 Format 比.

Format(_T("当前计数: %d, 总计数 %d"), 100, 150);
这样的代码是很方便的.   回复  更多评论
  

# re: 显示字符串的函数 2007-08-02 10:58 bbp
我还是不喜欢依赖于某特定平台,推荐不使用CString.Format,直接使用sprintf好了。
另外,这个函数用来做类型转换还好些。我们以前的项目就是用这种函数做字符串和其他类型的转换,后来发现性能较差,就把实现改成atoi之类的函数了。  回复  更多评论
  

# re: 显示字符串的函数[未登录] 2007-08-03 09:39 hdqqq
类似于Format的用法可以象下面这样,只是少了格式字符串
make_str("当前计数:",100,"总计数", 150);
至于效率的问题,确实是没有sprintf这种直接操作的函数快,因为涉及到返回的拷贝复制的开销和stringstream的内部实现等制约.  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理