проблема функции itoa

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

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

включил <stdio.h>, <stdlib.h>, <iostream> это не поможет.

6 ответов


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

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

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

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

ускорение образом:

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


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;
}

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

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

Метод 2: sprintf работает как для c & 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=c++0x.

C++ sprintf:

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

вы можете использовать команду

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

вывод будет: hell9


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