itoa problema funzione
-
05-10-2019 - |
Domanda
Sto lavorando su Eclipse all'interno dell'ambiente di Ubuntu sul mio C ++ progetto.
Io uso la funzione itoa
(che funziona perfettamente su Visual Studio) e il compilatore si lamenta che itoa
è sommerso.
I incluso <stdio.h>
, <stdlib.h>
, <iostream>
che non aiuta.
Soluzione
www.cplusplus.com dice:
Questa funzione non è definita in ANSI-C e non è parte di C ++, ma è supportato da alcuni compilatori.
Quindi, mi piacerebbe suggeriscono fortemente che non ne fanno uso. Tuttavia, è possibile ottenere questo abbastanza semplicemente utilizzando stringstream
come segue:
stringstream ss;
ss << myInt;
string myString = ss.str();
Altri suggerimenti
itoa()
non è parte di qualsiasi standard, quindi non si dovrebbe usare. Ci sono modi migliori, cioè ...
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;
}
modo Boost:
string str = boost::lexical_cast<string>(n);
itoa dipende compilatore, quindi meglio utilizzare i seguenti metodi: -
Metodo 1: Se si utilizza C ++ 11, basta andare per std :: to_string. Si farà il trucco.
Metodo 2: sprintf funziona sia per 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 -. Compilazione 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;
}`
è possibile utilizzare 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;
uscita sarebbe: hell9
Si è inclusa stdlib.h? (O meglio, dal momento che si sta utilizzando C ++, cstdlib)