我正在尝试将整数转换为 char 数组,我遇到了这段代码
int i = 5;
std::string s;
std::stringstream out;
out << i;
s = out.str();
但是当我尝试打印它的值s
时仍然打印 5。我不知道它是否应该这样做或者我做错了什么?此外,如果我可以将相同的 int 转换为 char 数组,我会更喜欢。但我将不胜感激在这件事上的任何帮助。谢谢!代码取自:替代 itoa() 将整数转换为字符串 C++?
我正在尝试将整数转换为 char 数组,我遇到了这段代码
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;
}