发布时间:2026-07-02阅读(0)
首先提出解决方案:
这几个有什么不同呢?下面测试对比。
C语言风格函数
atoi与strtol对比:
字符串str = “ 16s ” ;int a = atoi(str.c_str());int b = strtol(str.c_str(),nullptr,10);输出:
atoi的结果为:16strtol的结果为:16这两个函数都是从字符串开始寻找数字或正负号或小数点,遇到非法字符终止。
所以到上述s字符就不输出了,提前结束,依次当你的字符串不是数字的时候,或者小数点等非数字,不会报异常!直接输出0。
例如:
字符串str = “ asdsa ” ;int a = atoi(str.c_str());int b = strtol(str.c_str(),nullptr,10);输出:
00strtol标度与atoi来说,支持多种二进制转换,例如8二进制等
例如:
int b = strtol(str.c_str(), nullptr, 8);C 风格
在C 中可以使用stoi来转int,这个函数引用于前两个一个最大特点是:异常!
我们知道C 引用于C语言多了异常,这也是这个函数在C 中具有的最显著功能。
例如:
字符串str1 = “ asq,” ;// int c = stoi(str1); //报异常 string str2 = “ 12312 ” ;int c = stoi(str2); // ok cout << c << endl;异常如下:
terminate called after throwing an instance of std::invalid_argumentwhat(): stoi自定义
如下:
int stringToInt(const string&s){ int v; 串流ss; ss << s; ss >> v; 返回 v;}int main(){ int i = stringToInt(“ 2.3 ”); cout << i << endl;}
Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图