如何从int转换为char *?

我知道的唯一方法是:

#include <sstream> #include <string.h> using namespace std; int main() { int number=33; stringstream strs; strs << number; string temp_str = strs.str(); char* char_type = (char*) temp_str.c_str(); } 

但有没有更less的打字方法?

  • 在C ++ 11中,使用std::to_string作为:

     std::string s = std::to_string(number); char const *pchar = s.c_str(); //use char const* as target type 
  • 而在C + + 03中,你在做什么只是很好,除了使用const为:

     char const* pchar = temp_str.c_str(); //dont use cast 

你可以使用提升

 #include <boost/lexical_cast.hpp> string s = boost::lexical_cast<string>( number ); 

我想你可以使用sprintf:

 int number = 33; char* numberstring[(((sizeof number) * CHAR_BIT) + 2)/3 + 2]; sprintf(numberstring, "%d", number); 

C风格的解决scheme可以使用itoa ,但更好的方法是使用sprintf / snprintf将此数字打印到string中。 检查这个问题: 如何将整数转换为可移植的string?

请注意, itoa函数没有在ANSI-C中定义,也不是C ++的一部分,但是由一些编译器支持。 这是一个非标准的function,所以你应该避免使用它。 检查这个问题: 替代itoa()将整数转换为stringC ++?

还要注意,用C ++编写C风格的代码被认为是不好的做法,有时被称为“可怕的风格”。 你真的想把它转换成C风格的string? 🙂

我不会在最后一行注释掉const,因为这是有原因的。 如果你不能忍受一个const char *那么你最好复制char数组,如:

 char* char_type = new char[temp_str.length()]; strcpy(char_type, temp_str.c_str()); 

你也可以使用铸造。

例:

 string s; int value = 3; s.push_back((char)('0' + value)); 

看到这个答案https://stackoverflow.com/a/23010605/2760919

对于你的情况,只需将snprintf中的types从long(“%ld”)更改为int(“%n”)即可。