C++: простые реализации atoi и itoa
...то есть, стандартных сишных функций преобразования строки в число и числа в строку. Понадобились "в исходниках", а быстрее написать, чем найти. На совершенство отнюдь не претендуют, нужны были только для иллюстрации принципа и алгоритма.
#include <iostream.h> #include <string.h> #include <ctype.h> char *itoa (int n, char *s) { char *t=s; int z=0; if (n<0) { z=1; n=-n; } do *s++=n%10+'0'; while (n/=10); if (z) *s++='-'; *s='\0'; return strrev(t); } int atoi (char *s) { int z=0,n=0; while(isspace(*s)) s++; if (*s=='-') { z=1; s++; } else if (*s=='+') s++; while (isdigit(*s)) n=10*n+*s++-'0'; return (z?-n:n); } void main () { int n=-31289; char buf[80]; cout << "\nitoa=" << itoa (n,buf); cout << "\natoi=" << atoi (buf); cin.get(); }
19.11.2012, 18:24 [15864 просмотра]