1

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

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

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

4

3 回答 3

4

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

举个例子:

std::cout << i+i;   // should print "10"
std::cout << s+s;   // should print "55"
于 2011-04-05T17:07:20.720 回答
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.
于 2011-04-05T17:11:20.767 回答
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;
}
于 2011-04-05T18:16:46.280 回答