2014-10-02 2 views
-3

Как я могу перейти к преобразованию 56 и 124 в массив символов? Я не понимаю, как вы могли бы разделить целое число и поместить его в разные части массива символов. Я хочу поставитьКак преобразовать int в char [] в C++

int num = 56; 

в

char num[3] 
+1

Вы хотите, чтобы вы взяли целое число (56) и преобразовали его в char [2], содержащий «5» и «6»? Пожалуйста, дайте более подробную информацию. –

+1

да, это то, что я пытаюсь сделать. – john

+0

как насчет 'sprintf (buff,"% d ", num);'? – FoggyDay

ответ

3

Ну, если вы хотите получить чистый C раствор ++, вот оно:

C + +11:

std::string numStr = std::to_string(num); 

C++ 98:

std::ostringstream strm; 
strm << num; 
std::string numStr = strm.str(); 
1

Использование itoa, если вы хотите, чтобы преобразовать число в строку с нулевым символом, который будет представлять его.

char * itoa (int value, char * str, int base); 
+2

Это если OP предназначено для преобразования целого в строку с нулевым завершением, которая будет представлять ее. Возможно, задача состоит в том, чтобы скопировать байты целого в массив 'char'. Кроме того, поскольку вопрос отмечен как C++, вы также можете использовать 'std :: to_string (value)'. –

+0

itoa плохой, потому что он может не работать на всех системах. – john

+2

@john дайте мне одну систему, где она не будет работать на – PeterT

2

Если ваша цель состоит в том, чтобы переписать itoa здесь хорошо объяснить осуществление этого:

char* itoa(int num, char* str, int base) 
{ 
    int i = 0; 
    bool isNegative = false; 

    /* Handle 0 explicitely, otherwise empty string is printed for 0 */ 
    if (num == 0) 
    { 
     str[i++] = '0'; 
     str[i] = '\0'; 
     return str; 
    } 

    // In standard itoa(), negative numbers are handled only with 
    // base 10. Otherwise numbers are considered unsigned. 
    if (num < 0 && base == 10) 
    { 
     isNegative = true; 
     num = -num; 
    } 

    // Process individual digits 
    while (num != 0) 
    { 
     int rem = num % base; 
     str[i++] = (rem > 9)? (rem-10) + 'a' : rem + '0'; 
     num = num/base; 
    } 

    // If number is negative, append '-' 
    if (isNegative) 
     str[i++] = '-'; 

    str[i] = '\0'; // Append string terminator 

    // Reverse the string 
    reverse(str, i); 

    return str; 
} 
Смежные вопросы