stl的字符串格式化问题
#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




