C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > c++ 数字字符串子串获取

c++ 获取数字字符串的子串数值性能示例分析

作者:点墨

这篇文章主要为大家介绍了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++ 数字字符串子串获取的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文