我正在尝试将整数转换为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++?
答案 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;
}