%02d等同于std :: stringstream?
我想输出一个整数到一个std::stringstream
与printf
的%02d
的等效格式。 有一个更简单的方法来实现这个比:
std::stringstream stream; stream.setfill('0'); stream.setw(2); stream << value;
是否有可能将某种格式的标志传输到stringstream
,如(伪代码):
stream << flags("%02d") << value;
你可以使用<iomanip>
的标准操纵器,但是没有一个整齐的同时兼有fill
和width
的操作器:
stream << std::setfill('0') << std::setw(2) << value;
编写自己的对象时不难,当插入到stream中时,执行两个函数:
stream << myfillandw( '0', 2 ) << value;
例如
struct myfillandw { myfillandw( char f, int w ) : fill(f), width(w) {} char fill; int width; }; std::ostream& operator<<( std::ostream& o, const myfillandw& a ) { o.fill( a.fill ); o.width( a.width ); return o; }
在标准C ++中你不能做得更好。 或者,您可以使用Boost.Format:
stream << boost::format("%|02|")%value;
您可以使用
stream<<setfill('0')<<setw(2)<<value;