C++中字符串和数字之间的转换

来源:互联网 发布:数据标准化处理 编辑:程序博客网 时间:2024/06/06 10:47

atof(将字符串转换成浮点型数)
atoi(将字符串转换成整型数)
atol(将字符串转换成长整型数)
strtod(将字符串转换成浮点数)
strtol(将字符串转换成长整型数)
strtoul(将字符串转换成无符号长整型数)
toascii(将整型数转换成合法的ASCII 码字符)
toupper(将小写字母转换成大写字母)
tolower(将大写字母转换成小写字母)
函数库中提供了这些转换函数
需要加上头文件stdlib.h
下面具体看看各个函数的使用
atof的声明
double atof (const char* str); //atof(将字符串转换成浮点型数)
参数是一个C风格的字符串。如果是C++中的string类型的呢?
用例子验证下:

#include <cstdio>#include <iostream>#include <stdlib.h>using namespace std;int main() {    string str("12345");    float result = atof(str);    cout << "result = " << result << endl;    return 0;}

编译不通过,看下结果:
这里写图片描述
需要进行转换,string转为cosnt char *;可以使用C函数str.c_str();

#include <cstdio>#include <iostream>#include <stdlib.h>using namespace std;int main() {    string str("12345");    float result = atof((const char *)str.c_str());    cout << "result = " << result << endl;    return 0;}

这样就可以输出正确结果了。
这里写图片描述

同理其他涉及字符串转换的函数中,参数必须是C风格的字符串,使用c_str()进行stirng 到 char * 的转换。
这里需要注意后面的几个函数的参数形式:
double strtod(const char *nptr,char **endptr);
long int strtol(const char *nptr,char **endptr,int base);
unsigned long strtoul(const char *nptr,char **endptr,int base);
int toascii(int c);

0 0