首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带正号的boost::lexical_cast

带正号的boost::lexical_cast
EN

Stack Overflow用户
提问于 2012-10-15 17:17:51
回答 1查看 151关注 0票数 0

如何使boost::lexical_cast在转换为std::string时包含一个正号?

我打算做同样的事情:snprintf( someArray, someSize, "My string which needs sign %+d", someDigit );。在这里,如果字符串为正,则将someDigit放入字符串中;如果为负,则将字符串中的数字设置为-someDigit。请参阅:http://www.cplusplus.com/reference/clibrary/cstdio/snprintf/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-15 19:24:04

如何使boost::lexical_cast在转换为std::string时包含一个正号?

在使用boost::lexical_cast<>时,无法控制内置类型的格式。

boost::lexical_cast<>使用streams进行格式化。因此,可以创建一个新类并为其重载operator<<boost::lexical_cast<>将使用重载操作符来格式化该类的值:

代码语言:javascript
复制
#include <boost/lexical_cast.hpp>
#include <iomanip>
#include <iostream>

template<class T> struct ShowSign { T value; };

template<class T>
std::ostream& operator<<(std::ostream& s, ShowSign<T> wrapper) {
    return s << std::showpos << wrapper.value;
}

template<class T>
inline ShowSign<T> show_sign(T value) {
    ShowSign<T> wrapper = { value };
    return wrapper;
}

int main() {
    std::string a = boost::lexical_cast<std::string>(show_sign(1));
    std::cout << a << '\n';
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12892580

复制
相关文章

相似问题

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