首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否等同于%02d的std::stringstream?

是否等同于%02d的std::stringstream?
EN

Stack Overflow用户
提问于 2010-05-15 17:21:36
回答 4查看 79.4K关注 0票数 68

我想用printf%02d格式输出一个整数到std::stringstream。有没有比这个更简单的方法:

代码语言:javascript
复制
std::stringstream stream;
stream.setfill('0');
stream.setw(2);
stream << value;

是否可以将某种格式标志流式传输到stringstream,例如(伪代码):

代码语言:javascript
复制
stream << flags("%02d") << value;
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-15 17:29:03

您可以使用来自<iomanip>的标准操纵器,但是没有一个简洁的操纵器可以同时处理fillwidth

代码语言:javascript
复制
stream << std::setfill('0') << std::setw(2) << value;

编写自己的对象并不难,当插入到流中时,它可以同时执行这两个功能:

代码语言:javascript
复制
stream << myfillandw( '0', 2 ) << value;

例如。

代码语言:javascript
复制
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;
}
票数 81
EN

Stack Overflow用户

发布于 2010-05-15 17:29:01

您可以使用

代码语言:javascript
复制
stream<<setfill('0')<<setw(2)<<value;
票数 11
EN

Stack Overflow用户

发布于 2010-05-15 17:29:40

在标准C++中,您不能做得更好。或者,您可以使用Boost.Format:

代码语言:javascript
复制
stream << boost::format("%|02|")%value;
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2839592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档