首页 > 编程知识 正文

c++ itoa,_itoa_s函数

时间:2023-05-04 18:26:25 阅读:220185 作者:780

/* A C++ program to implement itoa() */#include <iostream> using namespace std; /* A utility function to reverse a string */void reverse(char str[], int length) { int start = 0; int end = length -1; while (start < end) { swap(*(str+start), *(str+end)); start++; end--; } } // Implementation of 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] = ''; 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] = ''; // Append string terminator // Reverse the string reverse(str, i); return str; } // Driver program to test implementation of itoa() int main() { char str[100]; cout << "Base:10 " << itoa(1567, str, 10) << endl; cout << "Base:10 " << itoa(-1567, str, 10) << endl; cout << "Base:2 " << itoa(1567, str, 2) << endl; cout << "Base:8 " << itoa(1567, str, 8) << endl; cout << "Base:16 " << itoa(1567, str, 16) << endl; return 0; } char* itoa(int value, char* result, int base) {// check that the base if validif (base < 2 || base > 36) { *result = ''; return result; }char* ptr = result, *ptr1 = result, tmp_char;int tmp_value;do {tmp_value = value;value /= base;*ptr++ = "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz" [35 + (tmp_value - value * base)];} while ( value );// Apply negative signif (tmp_value < 0) *ptr++ = '-';*ptr-- = '';while(ptr1 < ptr) {tmp_char = *ptr;*ptr--= *ptr1;*ptr1++ = tmp_char;}return result;}

引用地址
http://www.strudel.org.uk/itoa/

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。