📅  最后修改于: 2023-12-03 15:39:02.888000             🧑  作者: Mango
字符串转十进制是指将一个字符串表示的数字转换为十进制数值。C++中可以使用strtol
函数实现。
long int strtol (const char* str, char** endptr, int base);
其中参数含义如下:
str
: 要转换为长整型数的字符串。endptr
: 指向一个指针,用于存储转换后未转换的字符串部分的首地址,也可设置为NULL
表示不需要该值。base
: 要用于转换的进制数,可以是2~36之间的任何一个整数,或者0。如果是0,则strtol
会根据字符串的首字符来判断要用哪种进制,如0x
开头的字符串会被认为是16进制数。返回值为转换后的长整型数值。
下面的代码演示了如何将一个字符串表示的整数转换为十进制数值:
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
const char* str = "123456";
char* endptr;
long int num;
num = strtol(str, &endptr, 10);
cout << "String: " << str << endl;
cout << "Number: " << num << endl;
cout << "End pointer: " << endptr << endl;
return 0;
}
运行结果为:
String: 123456
Number: 123456
End pointer:
在使用strtol
函数时,需要注意以下几点:
strtol
函数之前,先检查字符串是否符合转换的条件。LONG_MAX
或LONG_MIN
,并设置errno
的值为ERANGE
。base
为0时,strtol
会自动根据字符串开头的特定字符来判断要使用哪种进制。但是如果字符串开头既没有0也没有其他特定字符,strtol
会当作十进制数来处理。如果要转换的字符串本身不是十进制数,建议明确指定base
的值。