numero from convertir convert c++ integer const-char

c++ - from - cómo convertir de int a char*?



int to char* c (7)

La única forma que conozco es:

#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(); }

Pero, ¿hay algún método con menos tipeo?


Creo que puedes usar un sprintf:

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


La solución estilo C podría ser usar itoa , pero la mejor manera es imprimir este número en cadena usando sprintf / snprintf . Compruebe esta pregunta: ¿cómo convertir un número entero a una cadena portably?

Tenga en cuenta que la función itoa no está definida en ANSI-C y no es parte de C ++, pero es compatible con algunos compiladores. Es una función no estándar, por lo tanto, debes evitar usarla. Verifique también esta pregunta: ¿ Alternativa a itoa () para convertir un entero a la cadena C ++?

También tenga en cuenta que escribir código de estilo C durante la programación en C ++ se considera mala práctica y, a veces se denomina "estilo espantoso". ¿Realmente quieres convertirlo en una cadena char* estilo C? :)


No descartaría el const en la última línea, ya que está ahí por una razón. Si no puedes vivir con un const char *, es mejor que copies el arreglo de caracteres como:

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


Puedes usar boost

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


Ver esta respuesta https://.com/a/23010605/2760919

Para su caso, simplemente cambie el tipo en snprintf desde long ("% ld") a int ("% n").


También puedes usar el casting.

ejemplo:

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


  • En C ++ 11, use std::to_string como:

    std::string s = std::to_string(number); char const *pchar = s.c_str(); //use char const* as target type

  • Y en C ++ 03, lo que estás haciendo está bien, excepto que uses const como:

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