c++ 获取数字字符串的子串数值性能示例分析
更新时间:2023年11月02日 11:49:44 作者:点墨
这篇文章主要为大家介绍了c++ 获取数字字符串的子串数值示例分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
题引
c++ 获取数字字符串的子串数值,比如给定字符串"123456",要获取第三位和第四位的数值,这里是34。
方法
1.使用substr
使用substr截取字串,再使用c_str()获取字符数组,再使用atoi()转换为数字
2.构造字符数组
直接使用索引获取字符,构建字符数组,再使用atoi()转换为数字
代码
#include <string> #include <iostream> #include <chrono> using namespace std; int main(int argc, char* argv[]) { string val = "123"; int total = 1000000; std::chrono::time_point<std::chrono::system_clock> start = std::chrono::system_clock::now(); for (int i = 0; i < total; i++) { int tmp = atoi(val.substr(1, 2).c_str()); } std::chrono::time_point<std::chrono::system_clock> end = std::chrono::system_clock::now(); std::chrono::microseconds diff = std::chrono::duration_cast<std::chrono::microseconds>(end - start); cout << "using substr:" << diff.count() << "ms" << endl; start = std::chrono::system_clock::now(); for (int i = 0; i < total; i++) { char vals[2] = { val[1],val[2] }; int tmp = atoi(vals); } end = std::chrono::system_clock::now(); diff = std::chrono::duration_cast<std::chrono::microseconds>(end - start); cout << "using char[]:" << diff.count() << "ms" << endl; return 0; }
执行结果
结论
使用字符直接构造,性能是substr的十倍左右
以上就是c++ 获取数字字符串的子串数值性能示例分析的详细内容,更多关于c++ 数字字符串子串获取的资料请关注脚本之家其它相关文章!
相关文章
json格式解析和libjson的用法介绍(关于cjson的使用方法)
下面小编就为大家带来一篇json格式解析和libjson的用法介绍(关于cjson的使用方法)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2016-12-12
最新评论