Frage
Ich arbeite auf Eclipse innerhalb Ubuntu-Umgebung auf meinem C ++ Projekt.
Ich verwende die itoa
Funktion (die perfekt auf Visual Studio arbeitet) und der Compiler beschwert sich, dass itoa
nicht deklariert wird.
I enthalten <stdio.h>
, <stdlib.h>
, <iostream>
, die keine Hilfe.
Lösung
www.cplusplus.com sagt:
Diese Funktion ist nicht in ANSI-C definiert ist und nicht Teil von C ++, sondern wird von einigen Compilern unterstützt.
Deshalb würde ich empfehlen, dass Sie es nicht verwenden. Allerdings können Sie diese ganz unkompliziert mit stringstream
erreichen wie folgt:
stringstream ss;
ss << myInt;
string myString = ss.str();
Andere Tipps
itoa()
ist nicht Teil eines Standard, so dass Sie es nicht verwenden sollten. Es gibt bessere Wege, das heißt ...
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-Weg:
string str = boost::lexical_cast<string>(n);
itoa hängt von Compiler, so besser die folgenden Methoden verwenden: -
Methode 1: Wenn Sie c ++ verwenden 11, gehen Sie einfach für std :: to_string. Es wird den Trick tun.
Methode 2: sprintf arbeitet für 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;
}
. Hinweis - Kompilierung mit -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;
}`
Sie können sprintf verwenden
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;
Ausgabe wäre: hell9
Haben Sie umfassen stdlib.h? (Oder besser gesagt, da Sie mit C ++, cstdlib)