cpp string split by delimeter and push back into vector

复制代码
void util::split_string_demo()
{
    std::string str=get_uuid();
    std::string delimiter="-";
    std::vector<std::string> vec;
    split_string(str,delimiter,vec);
    print_vector(vec);
    print_log(std::string(__FUNCTION__));
}

void util::print_vector(const std::vector<std::string> &vec)
{
    for(auto const &str:vec)
    {
        std::cout<<str<<std::endl;
    }
}

void util::split_string(std::string& str, const std::string& delimiter,std::vector<std::string> &vec)
{
    std::cout << str << std::endl; 
    std::string temp_str;
    int start = 0, end = 0;
    while ((end = str.find(delimiter, start)) != std::string::npos)
    {
        temp_str = str.substr(start, end-start);
        vec.push_back(temp_str);
        start = end + delimiter.length(); 
    } 
    temp_str=str.substr(start);
    if(!temp_str.empty())
    {
        vec.push_back(temp_str); 
    }    
}

void util::print_log(const std::string &str)
{
    std::cout << get_time_now() << ", in " << str << std::endl;
}

std::string util::get_time_now()
{
    std::chrono::time_point now = std::chrono::high_resolution_clock::now();
    time_t raw_time = std::chrono::high_resolution_clock::to_time_t(now);
    struct tm tm_info = *localtime(&raw_time);
    std::stringstream ss;
    auto mills = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch());
    auto seconds = std::chrono::duration_cast<std::chrono::seconds>(now.time_since_epoch());
    uint64_t mills_count = mills.count() - seconds.count() * 1000;
    ss << std::put_time(&tm_info, "%Y%m%d%H%M%S") << std::setw(3) << std::setfill('0') << mills_count;
    return ss.str();
}

std::string util::get_uuid()
{
    uuid_t new_uuid;
    uuid_generate(new_uuid);
    char *uuid_value = (char *)malloc(40);
    uuid_unparse(new_uuid, uuid_value);
    std::string uuid_str(uuid_value);
    free(uuid_value);
    return uuid_str;
}
复制代码

 

g++ -std=c++2a -I. *.cpp ./model/*.cpp -o h1 -luuid -lpthread

 

 

 

Be cautious in cpp substring(start_index,length) method,the length is the length,instead of index

posted @   FredGrit  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2020-02-12 C# bubble sort,selection sort,insertion sort
点击右上角即可分享
微信分享提示