【发布时间】:2011-12-01 12:58:06
【问题描述】:
我很高兴标准库获得to_string 函数,但现在我处于WTF 模式。首先为什么这个不是模板化的,其次如果它不是返回值的模板那么为什么在世界上他们没有to_u16string() 和to_u32string() 函数。
我知道有 boost lexical cast,但我很想知道是否有一种标准方法可以在不手动编写这些函数的情况下获得我想要的东西?
编辑:更糟糕的是 boost 1.46 也不喜欢 u16string :(
boost::lexical_cast<u16string>(22.44);
在抛出一个实例后调用终止 'boost::exception_detail::clone_impl
' what(): bad lexical cast: 源类型值不能被解释为目标
【问题讨论】:
-
STL 中没有
to_string。 -
虽然我完全同意 Tomalak 的抱怨,但我不确定与其他问题相比,这个问题有什么建设性。有很多“为什么语言 X 做 Y 事?”问题。他们中的大多数都没有关闭。是的,这个问题非常说得不好。但在它的核心,它实际上只是询问
std::to_string及其同类。 -
废话,这是一个完全有效的问题,投票重新开放。
-
你可以通过两行代码轻松解决这个问题:
wstring_convert<codecvt_utf8_utf16<char32_t>, char32_t> utf32conv; auto to_u32string = [&] (const auto& value) -> u32string {return utf32conv.from_bytes(to_string(value));};