我想以 printf
的 %02d
的等效格式将整数输出到 std::stringstream
。有没有比以下更简单的方法来实现这一点:
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 << 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;
}
https://stackoverflow.com/questions/2839592/