代码拉取完成,页面将自动刷新
同步操作将从 Yj/CPlusPlusThings 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
个人公众号:
首先提出解决方案:
这几个有什么不同呢?下面测试对比。
C语言风格函数
atoi与strtol对比:
string str = "16s";
int a = atoi(str.c_str());
int b = strtol(str.c_str(), nullptr, 10);
输出:
atoi的结果为:16
strtol的结果为:16
这两个函数都是从字符串开始寻找数字或者正负号或者小数点,遇到非法字符终止。
所以到上述s字符就不输出了,提前结束,也就是说当你的字符串不是数字的时候,或者小数点等非数字,不会报异常!直接输出0.
例如:
string str = "asdsa";
int a = atoi(str.c_str());
int b = strtol(str.c_str(), nullptr, 10);
输出:
0
0
strtol相比与atoi来说,支持多种进制转换,例如8进制等
例如:
int b = strtol(str.c_str(), nullptr, 8);
C++风格
在C++中可以使用stoi来转int,这个函数相比于前两个一个最大特点是:异常!
我们知道C++相比于C语言多了异常,这也是这个函数在C++中具有的最显著功能。
例如:
string 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_argument'
what(): stoi
自定义
也就是自己写呗,如下:
int stringToInt(const string &s) {
int v;
stringstream ss;
ss << s;
ss >> v;
return v;
}
int main() {
int i = stringToInt("2.3");
cout<<i<<endl;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。