注册 登录
编程论坛 C++教室

函数问题

weishuiershui 发布于 2008-10-09 23:56, 813 次点击
请问一下在C++中有什么函数可以把数字的字符串转化为整型数字???如  "1111100"转化为 1111100   


THANKS!
8 回复
#2
song42008-10-10 08:57
自己编个  费那劲
#3
夜の枫2008-10-10 10:42
好像没有吧!可以看帮助文档!也可以自己编一个了啦!自己编的话,更好用!!!
#4
yzy68065552008-10-10 11:50
回复 1# weishuiershui 的帖子
使用 atoi函数获取一个C字符串参数,返回对应的int值。如果参数不与一个int值对应,atoi就会返回0。atoi函数在文件为cstdlib的库中。如果数字太大,不能转换成int类型的值,可以使用atol将字符串转换为long类型的值。
例如:
atoi("1234");   //返回整数1234
atoi("#123");   //返回0
#5
blueboy820062008-10-10 12:18
Example

/* ATOF.C: This program shows how numbers stored
 * as strings can be converted to numeric values
 * using the atof, atoi, and atol functions.
 */

#include <stdlib.h>
#include <stdio.h>

void main( void )
{
   char *s; double x; int i; long l;

   s = "  -2309.12E-15";    /* Test of atof */
   x = atof( s );
   printf( "atof test: ASCII string: %s\tfloat:  %e\n", s, x );

   s = "7.8912654773d210";  /* Test of atof */
   x = atof( s );
   printf( "atof test: ASCII string: %s\tfloat:  %e\n", s, x );

   s = "  -9885 pigs";      /* Test of atoi */
   i = atoi( s );
   printf( "atoi test: ASCII string: %s\t\tinteger: %d\n", s, i );

   s = "98854 dollars";     /* Test of atol */
   l = atol( s );
   printf( "atol test: ASCII string: %s\t\tlong: %ld\n", s, l );
}


Output

atof test: ASCII string:   -2309.12E-15   float:  -2.309120e-012
atof test: ASCII string: 7.8912654773d210   float:  7.891265e+210
atoi test: ASCII string:   -9885 pigs      integer: -9885
atol test: ASCII string: 98854 dollars      long: 98854
#6
song42008-10-10 14:08
int my_atoi(const char * str)
{
       assert(str);

       int ret = 0;
       int flag = 1;
       if(*str == '-'){
               flag = -1;
               str ++;
       }else if(*str == '+'){
               str++;
       }

       while(*str){
               unsigned int ch = str[len] - '0';
               assert(ch<=9 && ch >=0);
               ret = ret * 10 + ch;
       }

       return ret * flag;
}
#7
heyyroup2008-10-10 20:26
有个atoi函数吧,c语言中的,可以去查查。
自己写一个,应该不难吧
#8
weishuiershui2008-10-11 23:57
谢谢,,大家啦。。。小弟决定写一个,,,不过就是太麻烦了 。。。。
#9
blueboy820062008-10-12 08:40
[bo][un]weishuiershui[/un] 在 2008-10-11 23:57 的发言:[/bo]

谢谢,,大家啦。。。小弟决定写一个,,,不过就是太麻烦了 。。。。

1