我正在使用我的C ++项目中的Ubuntu环境中的Eclipse。
我使用itoa
函数(在Visual Studio上完美运行),编译器抱怨itoa
未声明。
我添加了<stdio.h>
,<stdlib.h>
,<iostream>
,但没有帮助。
答案 0 :(得分:10)
www.cplusplus.com说:
此函数未在ANSI-C中定义,不是C ++的一部分,但有些编译器支持。
因此,我强烈建议您不要使用它。但是,您可以使用stringstream
非常直接地实现此目的,如下所示:
stringstream ss;
ss << myInt;
string myString = ss.str();
答案 1 :(得分:5)
提升方式:
string str = boost::lexical_cast<string>(n);
答案 2 :(得分:4)
itoa()
不属于任何标准,因此您不应使用它。有更好的方法,即......
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;
}
答案 3 :(得分:2)
itoa依赖于编译器,因此最好使用以下方法: -
方法1:如果你使用的是c ++ 11,那就去std :: to_string吧。它会起作用。
方法2:sprintf适用于c&amp; 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;
}
注 - 使用-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;
}`
答案 4 :(得分:1)
你可以使用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;
输出将是:hell9
答案 5 :(得分:0)
您是否包含stdlib.h? (或者更确切地说,因为你正在使用C ++,cstdlib)