2012-10-15 67 views

回答

0

如何使boost :: lexical_cast在轉換爲std :: string時包含正號?

沒有辦法控制使用boost::lexical_cast<>當內置類型的格式。

boost::lexical_cast<>使用流進行格式化。因此,人們可以創建一個新類併爲其重載operator<<boost::lexical_cast<>將使用該重載算子來格式化該類的值:

#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'; 
} 
相關問題