字符串分割

1. 将字符串以特定字符进行分割,例如将 "usr/local/lib64" 以 "/" 进行分割

复制代码
vector<string> Split(const string& str)
    {
        stringstream ss(str);
        vector<string> res;
        string substr;
        while (getline(ss, substr, '/')) {
            if (substr != "") {
                res.push_back(substr);
            }
        }
        return res;
    }
复制代码

 

2. 字符串以特定子字符串进行分割,例如将 "usr//local//lib64" 以 "//" 进行分割

复制代码
vector<string> Split(const string& str)
{
    const string delimiter = "//";
    auto buffer = str;
    size_t pos = buffer.find(delimiter);  // 找到第一个子字符串 "//" 的索引
    vector<string> res;
    while (pos != string::npos) {
        auto subStr = buffer.substr(0, pos);
        buffer = buffer.substr(pos + 2);   // 这里加上的是子字符串 "//" 的大小
        pos = buffer.find(delimiter);
        res.emplace_back(subStr);
    }
    res.emplace_back(buffer);
    return res;
}
复制代码

 

3. 将字符串转换为数字

方法一:stoi

优点:可转8、10、16进制数,默认转十进制数;

缺点:当匹配到非数字串可能会抛出异常,如:str = "cc100";

string str = "01011";
int i = stoi(str, 0, 2);  // 将字符串 str 从 0 位置开始到末尾的 二进制 转换为 十进制

 

方法二:stringstream

优点:简洁(推荐),有 dec/oct/hex 三种

stringstream ss(str);
ss >> dec >> num;

 

方法三:将二进制字符串转换为二进制数字输出

bitset<8> decBits(10);  // 将十进制转换为二进制输出
bitset<8> strBits("00110011");    // 注意如果0或1的其他数字出现,会抛出异常

 

posted @   皮卡啰  阅读(306)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示