проблема функции Итоа - PullRequest
       17

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

10 голосов
/ 27 сентября 2010

Я работаю над Eclipse в среде Ubuntu для моего проекта C ++.

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

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

Ответы [ 6 ]

10 голосов
/ 27 сентября 2010

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

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

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

stringstream ss;
ss << myInt;
string myString = ss.str();
5 голосов
/ 27 сентября 2010

Способ повышения:

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

5 голосов
/ 27 сентября 2010

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;
}
2 голосов
/ 06 сентября 2015

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

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

метод 2: sprintf работает как для 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;
}

Примечание - компилировать, используя -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;
}`
1 голос
/ 18 июля 2017

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

0 голосов
/ 27 сентября 2010

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

...