【发布时间】:2014-03-09 17:04:36
【问题描述】:
当我传递一些数据时,输出类似于xxxxxxxx0x97 0x104 0x111 0x106 0x0
为什么 cout 格式只影响第一个输出?
void Dumper::hex(const unsigned char * data, size_t len) {
cout << endl;
ios::fmtflags f(cout.flags());
/*
cout.fill('0');
cout.width(2);
*/
cout.fill('x');
cout.width(10);
for (int i = 0; i < len; i++) {
cout << "0x" << ((long)(data[i]) & 255) << " ";
}
cout.flags(f);
cout << endl;
}
【问题讨论】:
-
width()在插入后被重置。在循环中使用std::setw。 -
顺便说一句,您输出“0x”后跟十进制值,如果您想以十六进制输出,请执行
cout << std::hex。
标签: c++ formatting iostream