C ++中的整数到字符串转换/整数字符串连接 - 更紧凑的解决方案?

时间:2011-12-20 14:53:13

标签: c++ string casting int

如何做整数 - >字符串转换已在互联网上多次回答...但是,我正在寻找最紧凑的“C ++ - 方式”来做到这一点。

由于你能够使用重载+运算符连接字符串,所以最好能够按照python-ish的方式做一些事情。 x =(stringVariable + str(intVariable))连接,但我不知道是否有一种规范的方法可以在C ++中执行此操作。

我看到的最常见的解决方案是:

stringstream:如果可能的话,最好不要使用3行代码(声明,写入流,转换为字符串)来连接一些字母和数字。

itoa:这有效,但我正在寻找一个规范的C ++解决方案。此外,我认为itoa在技术上是非标准的,尽管我可能是错的。

提升格式/提升词法演员:这也有效,但是没有什么能在vanilla C ++中完成这项工作吗?

4 个答案:

答案 0 :(得分:17)

#include <string>

字符串为整数:int n = std::stoi(s);

整数到字符串:std::string s = std::to_string(n);

答案 1 :(得分:4)

C ++ 11有std::to_string,但在C ++ 03中没有“单一函数调用解决方案”。同样boost::lexical_cast(虽然专门针对某些情况)和std::to_string最终会针对他们应转换的任何T调用operator<<(std::ostream&,T)。一切都是关于能够一般地处理事情,并且当op<<已经存在时,为什么不重用它来创建字符串表示?

答案 2 :(得分:2)

stringVariable + boost::lexical_cast<std::string>( intVariable )可以解决问题,但我不确定这是一个好主意。即使在Python中,像'{}{:6f}'.format( stringVariable, intVariable )这样的东西也会更常见。

答案 3 :(得分:0)

有3行转换有什么问题?如果你需要随时使用相同类型的连接,只需将它放入一个函数即可。这比使用奇怪的解决方案更好。