Pregunta

Estoy trabajando en Eclipse en entorno Ubuntu en mi proyecto de C ++.

Yo uso la función itoa (que funciona perfectamente en Visual Studio) y el compilador se queja de que se itoa no declarado.

I incluyó <stdio.h>, <stdlib.h>, <iostream> lo que no ayuda.

¿Fue útil?

Solución

www.cplusplus.com dice:

Esta función no está definido en ANSI-C y no es parte de C ++, pero está soportada por algunos compiladores.

Por lo tanto, me gustaría sugerir fuertemente que usted no lo usa. Sin embargo, se puede lograr esto con bastante francamente stringstream de la siguiente manera:

stringstream ss;
ss << myInt;
string myString = ss.str();

Otros consejos

itoa() no es parte de ningún estándar por lo que no se debe utilizar. Hay mejores maneras, es decir ...

C:

int main() {
    char n_str[10];
    int n = 25;

    sprintf(n_str, "%d", n);

    return 0;
}

C ++:

using namespace std;
int main() {
    ostringstream n_str;
    int n = 25;

    n_str << n;

    return 0;
}

Boost manera:

string str = boost::lexical_cast<string>(n);

itoa depende del compilador, a fin de utilizar mejor los métodos siguientes: -

Método 1: Si está utilizando C ++ 11, ir a por std :: to_string. Se hará el truco.

Método 2: sprintf funciona tanto para C & C ++. ex- ex - to_string

#include <bits/stdc++.h>
using namespace std;
int main ()
{
  int i;
  char buffer [100];
  printf ("Enter a number: ");
  scanf ("%d",&i);

  string str = to_string(i);
  strcpy(buffer, str.c_str());

  cout << buffer << endl;
  return 0;
}

Nota -. Compilación usando -std = c ++ 0x

C ++ sprintf:

int main ()
{
int i;
  char buffer [100];
  printf ("Enter a number: ");
  scanf ("%d",&i);
  sprintf(buffer, "%d", i);
  return 0;
}`

puede usar sprintf

char temp[5];
temp[0]="h"
temp[1]="e"
temp[2]="l"
temp[3]="l"
temp[5]='\0'
sprintf(temp+4,%d",9)
cout<<temp;

salida sería: hell9

¿Incluyó stdlib.h? (O mejor dicho, ya que estás usando C ++, cstdlib)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top