C++string转int的方法

一 点睛

需要用到下面这一组函数。

long int strtol(const char *nptr, char **endptr, int base);                    //将参数nptr字符串根据参数base来转换成有符号的整型
long long int strtoll(const char *nptr, char **endptr, int base);              //将参数nptr字符串根据参数base来转换成有符号的长整型
unsigned long int strtoul(const char *nptr, char **endptr, int base);          //将参数nptr字符串根据参数base来转换成无符号整型
unsigned long long int strtoull(const char *nptr, char **endptr, int base);    //将参数nptr字符串根据参数base来转换成无符号长整型

使用说明

第一个参数 nptr是要转化的字符串。

第二个参数endptr可以为空,如果不为空,则 endptr 保存函数结束前的那个非合法字符的地址。如果没有合法字符,则 *endptr = nptr,函数返回0.

第三个参数base说明nptr的进制。base 取值范围 0,2-36。

这几个函数会忽略nptr前面的空格( ' ', '\t', '\n' '\f', '\v' '\r' ,由isspace判定为真的字符)。

二 实战

1 代码

#include
#include
#include
using namespace std;
int main(){
    char *endptr;
    char nptr[]="123abc";
    int ret = strtol(nptr, &endptr, 10 );
    cout<<"ret:"<

2 运行

[root@localhost charpter03]# g++ 0307.cpp -o 0307
[root@localhost charpter03]# ./0307
ret:123
endptr:abc
ret:0
endptr2:
        abc
ret:83
endptr8:
ret:291
endptr16:

3 说明

当第3个参数为0时,则分以下3中情况进行处理:

第1种:如果nptr以0x开头,则把nptr当成16进制来处理。

第2种:如果nptr以0开头,则把nptr当成8进制来处理。

第3种:把nptr当成10进制。

 

你可能感兴趣的:(C++)