c语言转换形式

string str;
int i = atoi(str.c_str());//string转int
float f = atof(str.c_str());//string转float
long l = atol(str.c_str());//string转long
long long ll = atoll(str.c_str());//string转long long

cpp语言转换形式

string str;
int i = stoi(str);//string转int
float f = stof(str);//string转float
long l = stol(str);//string转long
long long ll = stoll(str);//string转long long
double d = stod(str);//string转double
long double ld = stold(str);//string转long double
unsigned long ul = stoul(str);//string转unsigned long
unsigned long long ull = stoull(str);//string转unsigned long long
  • 相同点:
    • 功能一样
  • 不同点:
    • 前者头文件是#include<stdlib.h> ;后者是#include<string>
    • atoi()的参数是 const char* ,因此对于一个字符串str我们必须调用 c_str()的方法把这个string转换成 const char* 类型的;而stoi()的参数是const string*,不需要转化为 const char*;
    • stoi()会做范围检查,如果超出范围的话则会runtime error!;而atoi()不会做范围检查,如果超出范围的话,超出上界,则输出上界,超出下界,则输出下界

参考:(https://blog.csdn.net/yky__xukai/article/details/79554963)