【问题标题】:what's concise C++ idiom for conversion from int|double to string? [duplicate]从 int|double 到 string 的转换的简洁 C++ 习语是什么? [复制]
【发布时间】:2013-08-26 11:39:23
【问题描述】:

通过相关的问答,似乎转换为字符串的最佳 C++ 实践是

ostringstream stringStream;
stringStream << input_value;        // let's say, input_value is a double
output_string = stringStream.str();

有没有什么方法可以在不到三行干净的 C++ 中达到同样的效果?

【问题讨论】:

标签: c++


【解决方案1】:

使用std::to_string 系列函数:

std::string s = std::to_string(3.1416);

如果您没有所需的 C++11,另一种选择是 boost::lexical_cast。

std::string s = boost::lexical_cast<std::string>(3.1416);

【讨论】:

    【解决方案2】:

    是的,std::to_string:

    output_string = std::to_string(input_value);
    

    (对于 C++03,请查看 boost::lexical_cast)。

    【讨论】:

    • 请注意这是C++11 功能
    【解决方案3】:

    如果你没有 C++11,你可以使用类似的东西:

    boost::lexical_cast<std::string>(input_value);
    

    (如果您不想要 Boost,编写自己的 to_string 很容易 - 您实际上只是将现有代码包装在一个函数中)。

    如果您确实拥有 C++11,请坚持使用前面提到的 std::to_stringJesse Good 和 juanchopanza。

    【讨论】:

    • boost 不是标准 C++ 的一部分。并且将所有内容包装在一个隐藏所有内容的函数中总是可以由任何人完成,但是......它并不能解释任何事情
    • to_string 和 lexical_cast 是函数 - 有什么区别?
    • to_string 和 std::stringstream 是 C++ 标准的一部分。升压不是。如果我们承认采用其他地方交付的功能,我们就是在玩不同的游戏。
    【解决方案4】:

    两者都是 C++ 11 中的单行代码:

    std::string s1 = std::to_string(42);
    

    和

    std::string s2 = std::to_string(42.0);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-05
      • 1970-01-01
      • 2013-05-31
      • 1970-01-01
      • 2015-10-07
      • 2012-01-25
      • 1970-01-01
      • 2012-08-04
      相关资源
      最近更新 更多