CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

stl的字符串格式化问题

楼主someone(阿风)2005-08-01 19:04:03 在 C/C++ / C++ 语言 提问

#include   <iostream>  
  using   std::cout;  
  using   std::endl;  
  using   std::hex;  
  using   std::showbase;  
   
  #include   <string>  
  using   std::string;  
   
  #include   <sstream>  
  using   std::ostringstream;  
   
  #include   <iomanip>  
  using   std::setw;  
  using   std::setfill;  
   
  int   main(int   argc,   char   *argv[])  
  {  
  ostringstream   ssTest;  
  unsigned   long   dwFlags[]   =   {   0x00000000,   0x00008000,   0xff000000,   0x000000ff   };  
  len   =   sizeof(dwFlags)   /   sizeof(dwFlags[0]);  
  ssTest<<   showbase     <<   hex   <<   setfill('0');  
  for   (   i=0;   i<len;   i++)  
  ssTest   <<   setw(8)   <<   (int)dwFlags[i]   <<   endl;  
  cout   <<   ssTest.str();  
  }  
   
   
  输出:  
  00000000  
  000X8000  
  0XFF000000  
  00000XFF  
   
   
  请问如何用stl的string、ostringstream的setw、setfill等能得到如下的输出结果  
  0x00000000    
  0x00008000    
  0xff000000    
  0x000000ff  
   
  下面的方法不算  
      ssTest<<   hex   <<   setfill('0');  
      for   (   i=0;   i<len;   i++)  
          ssTest   <<   "0x"   <<   setw(8)   <<   (int)dwFlags[i]   <<   endl;  
  问题点数:100、回复次数:12Top

1 楼LoveYouJustOneDay(哈哈)回复于 2005-08-01 19:24:21 得分 5

用   printf(   )控制比较方便Top

2 楼fangrk(加把油,伙计!)回复于 2005-08-01 19:49:04 得分 80

#include   <iostream>  
  using   std::cout;  
  using   std::endl;  
  using   std::hex;  
  using   std::showbase;  
   
  #include   <string>  
  using   std::string;  
   
  #include   <sstream>  
  using   std::ostringstream;  
   
  #include   <iomanip>  
  using   std::setw;  
  using   std::setfill;  
  using   std::internal;  
   
  int   main(int   argc,   char   *argv[])  
  {  
  ostringstream   ssTest;  
  unsigned   long   dwFlags[]   =   {   0x00000000,   0x00008000,   0xff000000,   0x000000ff   };  
  const   int   len   =   sizeof(dwFlags)   /   sizeof(dwFlags[0]);  
  ssTest<<   showbase     <<   hex   <<   internal   <<setfill('0');  
  //dwFlags[0]还是没有0x前缀,改为非0数倒是可以的.原因一下子找不到  
  for   (int   i=0;   i<len;   i++)  
  ssTest<<   setw(10)   <<   dwFlags[i]   <<   '\n';  
  cout   <<   ssTest.str();  
  }Top

3 楼xiaolizi(小李子)回复于 2005-08-01 20:10:19 得分 5

如果使用mfc的话CString.Format可以很好的解决这个问题,如果是一般的console建议使用printf函数,实在不行可以自己写个函数类似itoa的16进制版。Top

4 楼Codavid()回复于 2005-08-01 21:28:15 得分 5

我试了一下,楼上的是最好的方法了Top

5 楼vcleaner(我没当大哥很久了.......)回复于 2005-08-02 08:36:40 得分 5

都使用了MFC了还使用STL干什么啊。呵呵  
  个人觉得使用C的printf即可。Top

6 楼ningzhiyu(凝滞雨)回复于 2005-08-02 09:06:22 得分 0

学习一下Top

7 楼Darkay_Lee()回复于 2005-08-02 09:15:02 得分 0

stl的格式化太麻烦了,我上次也是同样的问题,搞了半天Top

8 楼jiajun2001(Jagen(嘉俊))回复于 2005-08-02 09:38:26 得分 0

呵呵,就按照   fangrk(加把油,伙计!)   的做法吧!Top

9 楼someone(阿风)回复于 2005-08-02 10:05:56 得分 0

都使用了MFC了还使用STL干什么啊。呵呵  
  个人觉得使用C的printf即可。  
   
  使用stl当然有使用stl的好处了,比如说移植。Top

10 楼someone(阿风)回复于 2005-08-02 10:08:00 得分 0

谢谢   fangrk(加把油,伙计!)   ,还有哪位高手能解决值为0的情况吗?Top

11 楼someone(阿风)回复于 2005-08-08 13:03:28 得分 0

还有哪位高手能解决值为   0   的情况?Top

12 楼cmoring(my study will go on)回复于 2005-08-08 14:01:25 得分 0

用printf   同样不会用移植的问题Top

相关问题

  • 格式化字符串
  • 格式化字符串
  • 字符串的格式化
  • ______格式化字符串
  • 格式化字符串问题
  • 如何将字符串格式化
  • 怎样格式化字符串
  • 如何格式化字符串
  • 字符串格式化问题?
  • 格式化字符串的问题

关键词

  • sstest
  • dwflags
  • ostringstream
  • using std
  • sizeof
  • include

得分解答快速导航

  • 帖主:someone
  • LoveYouJustOneDay
  • fangrk
  • xiaolizi
  • Codavid
  • vcleaner

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo