string格式化的问题

whn 2003-08-18 06:40:58
我用标准库的string类,
我想实现格化string串
比如c库中有sprintf(tmpBuf,"%lu%08x",i,j)这样个格式化
还有MFC的CString也有CString::Format("%lu%08x",i,j)这样的格式化,
我用string时如何对其格式化啊
...全文
1202 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
yizhili 2003-09-21
  • 打赏
  • 举报
回复
各位高手们,帮忙看一下这个吧:
http://expert.csdn.net/Expert/topic/2284/2284101.xml?temp=.4566767
尤其是sscanf的替代方法,这个好像string和CString中都没有吧?不然为什么会有wsscanf存在?
mmdou 2003-09-21
  • 打赏
  • 举报
回复
wo 我觉得用mystring.c_str()就行了吧
flinming 2003-09-21
  • 打赏
  • 举报
回复
up
嵌入式电子 2003-09-21
  • 打赏
  • 举报
回复
plainsong(短歌)很有道理
sevencat 2003-09-17
  • 打赏
  • 举报
回复
用 strstream这些东西的效率可能还是成问题的。
以前我也觉得困惑。
不过我看过一些项目里的解决方法,
好像都是最简单的C类的解决方案
就像 str1=ss+ssfda+as;之类 方法。
因此我认为虽然这种方法比较丑陋,但是可能是最有效率的,最容易懂的。

谈到MFC的CSTRING,我就想起以前也有个工作室出的一本MFC详解,一看内容还不错,就是觉得跟侯的分析差不多,后来我就看到CString这一章,作者就说了,这个类跟标准库的std::string基本是一样的,所以他不分析了。
看到这里,我就想这个作者自己可能也没有用过这个cstring,因此这本书很可能就是新手写的。
wingfiring 2003-09-17
  • 打赏
  • 举报
回复
小问题也能烦死人。
shornmao 2003-09-17
  • 打赏
  • 举报
回复
strstream是被废弃的,不推荐使用是因为它作为兼容性保留的,将来可能从库中删除。
但是stringstream是标准的,可以放心使用,为了一个小问题,引入boost有点得不偿失。
晨星 2003-09-12
  • 打赏
  • 举报
回复
咦?string好像没有Format吧?那是MFC中CString的成员函数呀。
ahao 2003-09-12
  • 打赏
  • 举报
回复
str.Format()是什么
jakeye 2003-09-10
  • 打赏
  • 举报
回复
studing
robertnet 2003-09-09
  • 打赏
  • 举报
回复
yunheehust(潇雨)
有何异议?对string的格式化就是如此
1.转化成数组 (str.c_str())
2.将此数组格式化 (str.Format())
本人已经说得很清楚,将不再对此问题发表观点。
yunheehust 2003-09-09
  • 打赏
  • 举报
回复
robertnet
如此,再用str.Format()
??????????????????????
flc 2003-09-09
  • 打赏
  • 举报
回复
xuexi
hyifeng 2003-09-07
  • 打赏
  • 举报
回复
楼上的:

“Effective C++》里侯杰建议我们用string和容器代替数组”

不好意思,能不能把名字写正确。
robertnet 2003-09-06
  • 打赏
  • 举报
回复
《Effective C++》里侯杰建议我们用string和容器代替数组,但考虑到还有很多函数之参数依然是数组类型的。如此有一个函数专门来解决此问题,在《C++标准程序库》里讲string的时候提到过,用法如下:
string str = "asdfasdf";
str.c_str(); //此时str已经是一个最后面带一个0的标准数组了
如此,再用str.Format()
再输出即可。
短歌如风 2003-08-23
  • 打赏
  • 举报
回复
strstream是不再被推荐使用的,保留它是为了兼容,建议大家不要再用。用boost:format更好一点。

其实我也不太明白为什么它“不再被推荐使用”,不过以后可能不会再被支持。不过如果一定要使用的话一定要注意:
strstream::str()的返回值不保证有'\0'结束符,你应该用s<<'\0'把它加上去;
strstream::str()返回后,strstream不再负责内存的释放,你必须自己释放这个函数的返回值,或调用strstream::freeze进行“解冻”。
vcforever 2003-08-23
  • 打赏
  • 举报
回复
晨星说的对!
同意!
nsly 2003-08-22
  • 打赏
  • 举报
回复
stringstream s;
s << std::setw(3) << std::setfill('0') << i;

cout << s.str() << endl;
bigflyingpig 2003-08-19
  • 打赏
  • 举报
回复
关注
whn 2003-08-19
  • 打赏
  • 举报
回复
能不能给点代码描述一下啊,大哥,谢谢
加载更多回复(6)

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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