将整数转换为字符串C ++

时间:2011-04-05 17:04:44

标签: c++ itoa

我正在尝试将整数转换为char数组,而我遇到了这段代码

int i = 5;
std::string s;
std::stringstream out;
out << i;
s = out.str();

但是当我尝试打印s的值时,它仍会打印5.我不知道它应该这样做还是我做错了什么?此外,如果我可以将相同的int转换为char数组,我更愿意。但我会感谢任何帮助。 谢谢! 代码取自:Alternative to itoa() for converting integer to string C++?

3 个答案:

答案 0 :(得分:4)

是的,它应该这样做。如果对结果进行其他字符串类型操作(例如,将其与其他字符串连接,搜索字符串中的字符),您(主要)会注意到直接打印数字的区别(

)。

仅举例:

std::cout << i+i;   // should print "10"
std::cout << s+s;   // should print "55"

答案 1 :(得分:1)

  

此外,如果我可以将相同的int转换为char数组,我更愿意。

char *charPtr = new char[ s.length() + 1 ] ; // s is the string in the snippet posted
strcpy( charPtr, s.c_str() ) ;

// .......

delete[] charPtr ; // Should do this, else memory leak.

答案 2 :(得分:1)

如果您不想担心可能会对boost/lexical_cast.hpp感兴趣的问题。

#include <boost/lexical_cast.hpp>
#include <string>
#include <iostream>

int main() {
  const int i=5;
  const char* s = boost::lexical_cast<std::string>(i).c_str();
  std::cout << s << std::endl;
}