将整型转换为字符串

converting integer to string C++

本文关键字:字符串 转换 整型      更新时间:2023-10-16

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

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

但是当我尝试打印s的值时,它仍然打印5。我不知道它是否应该这样做,还是我做错了什么?此外,如果我能将相同的int转换为char数组,我会更喜欢。但我很感激在这件事上的任何帮助。谢谢!代码取自:itoa()的替代方案,用于将整数转换为字符串c++ ?

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

例如:

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

此外,我更希望我能将相同的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.

如果你不想再担心这样的问题,你可能会对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;
}