C++ 按分隔符拆分字符文本

C++ 按分隔符拆分字符文本

C++ 中的 boost::split 函数

boost::split()的使用方式

主要有两种方法,一种使用boost::split()分割,一种使用stringstream+getline()分割

使用boost::split()函数分割字符文本

Boost 提供了强大的工具,可以使用成熟且经过良好测试的库来扩展 C++ 标准库

#include <boost/algorithm/string.hpp>

boost::split(type, select_list, boost::is_any_of(token), boost::token_compress_on);
  • type : 类型是std::vectorstd::string,用于存放切割之后的字符串
  • select_list :传入的字符串,可以为空
  • boost::is_any_of(token) :设定切割符token
  • boost::token_compress_on : 将连续多个分隔符当一个,默认没有打开,用的时候一般要打开

📌 split()切割的string为空时,是可以切割出来一个空字符的

#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <boost/algorithm/string/split.hpp>

using std::cout; using std::cin;
using std::endl; using std::string;
using std::vector;
using std::stringstream;

int main() {
    string text = "Lorem ipsum  dolor sit amet, consectetur adipiscing elit.";
    vector<string> words;

    boost::split(words, text, isspace, boost::token_compress_on);
    for (const auto &item : words) {
        cout << item << "; ";
    }
    cout << endl;

    return EXIT_SUCCESS;
}
Lorem; ipsum; dolor; sit; amet,; consectetur; adipiscing; elit.;

使用stringstream + getline()分割字符文本

这种情况下,只使用 STL 工具,不需要包含 Boost 头文件

#include <iostream>
#include <string>
#include <sstream>
#include <vector>

using std::cout; using std::cin;
using std::endl; using std::string;
using std::vector;
using std::stringstream;

int main() {
    string text = "Lorem ipsum  dolor sit amet, consectetur adipiscing elit.";
    vector<string> words;

    char space_char = ' ';
    stringstream sstream(text);
    string word;
    while (std::getline(sstream, word, space_char)) {
        words.push_back(word);
    }

    for (const auto &item : words) {
        cout << item << "; ";
    }
    cout << endl;

    return EXIT_SUCCESS;
}
Lorem; ipsum; ; dolor; sit; amet,; consectetur; adipiscing; elit.;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Prejudices

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值