[cpp]便捷的字符串分割方法

前言

不像python的str提供的内置split方法一样方便的进行字符串分割,c++的string模板库没有直接提供分割字符串的成员方法。偶然在看《c++prime》时看到string模板库提供getline方法, 利用方法可以实现自定义分隔符分割字符串。

使用getline进行分割

getline函数接受三个参数,分别是input(the stream to get data from), str(the string to put the data into), delim(the delimiter character) 。该函数返回值是input

其中inputistream类型,比如cin, istringstream等继承自istream的类,分割符为char型字符。

为了获取带空格的字符串,一般使用getline(cin, str)进行读取字符串。读取待分割字串到str中后,我们需要用其实例化一个istringstream作为getlineinput才能完成分割。

分割过程中需要注意一点: 若待分割字符串中包含连续的分割字符,这种情况会得到空字符串。多数情况下我们不期望得到空字符串,因此需要判断分割得到的字符串是否为空。

Demo

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main() {
string line, word;
getline(cin, line);
istringstream input(line);

while (getline(input, word, ' ')) {
if (!word.empty())
cout << "word : " << word << endl;
}
return 0;
}

结果


欢迎讨论指正

作者

Jsss

发布于

2021-10-27

更新于

2021-12-27

许可协议


评论