Проблема с функцией itoa

Я работаю над Eclipse внутри среды Ubuntu в своем проекте на С++.

Я использую функцию itoa (которая отлично работает в Visual Studio), и компилятор жалуется, что itoa не объявлен.

Я включил <stdio.h>, <stdlib.h>, <iostream>, который не помогает.

Ответы

Ответ 1

www.cplusplus.com говорит:

Эта функция не определена в ANSI-C и не является частью С++, но поддерживается некоторыми компиляторами.

Поэтому я настоятельно рекомендую вам не использовать его. Однако вы можете достичь этого довольно просто, используя stringstream следующим образом:

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

Ответ 2

Способ увеличения:

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

Ответ 3

itoa() не входит в какой-либо стандарт, поэтому вы не должны его использовать. Там лучшие способы, то есть...

С

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

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

    return 0;
}

С++:

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

    n_str << n;

    return 0;
}

Ответ 4

itoa зависит от компилятора, поэтому лучше использовать следующие методы: -

метод 1: Если вы используете С++ 11, просто перейдите к std:: to_string. Это сделает трюк.

метод 2: sprintf работает как для c, так и для С++. экс- 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 = С++ 0x.

С++ sprintf:

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

Ответ 5

вы можете использовать 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

Ответ 6

Вы включили stdlib.h? (Вернее, поскольку вы используете С++, cstdlib)