如何做整数 - >字符串转换已在互联网上多次回答...但是,我正在寻找最紧凑的“C ++ - 方式”来做到这一点。
由于你能够使用重载+运算符连接字符串,所以最好能够按照python-ish的方式做一些事情。 x =(stringVariable + str(intVariable))连接,但我不知道是否有一种规范的方法可以在C ++中执行此操作。
我看到的最常见的解决方案是:
stringstream:如果可能的话,最好不要使用3行代码(声明,写入流,转换为字符串)来连接一些字母和数字。
itoa:这有效,但我正在寻找一个规范的C ++解决方案。此外,我认为itoa在技术上是非标准的,尽管我可能是错的。
提升格式/提升词法演员:这也有效,但是没有什么能在vanilla C ++中完成这项工作吗?
答案 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行转换有什么问题?如果你需要随时使用相同类型的连接,只需将它放入一个函数即可。这比使用奇怪的解决方案更好。