字符串的切割
题目描述
给定一个字符串,请实现一个函数,将该字符串按照某个字符分割,并返回一个包含每个子串的向量。
输入样例 1
1
2
参数1:"hello world"
参数2:' '
输出样例 1
1
["hello", "world"]
输入样例 2
1
2
参数1:"a b c d e f g h i j k l m n o p q r s t u v w x y z"
参数2:' '
输出样例 2
1
["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
解题思路
利用istringstream和getline函数,可以将字符串按照某个字符分割,并返回一个包含每个子串的向量。
istringstream是istream的子类,可以从字符串流中读取数据。getline函数从输入流中读取一行,并将其存储在字符串中。
1
2
istringstream iss(str); // 构造一个字符串流对象iss,并将str作为输入流。
getline(iss, token, delimiter); // 从输入流中读取一行,并将其存储在token中,直到遇到分隔符delimiter。遇到的分隔符也会被丢弃。
限制:只能按照单个字符分割,不能按照多个字符分割。
代码实现
1
2
3
4
5
6
7
8
9
vector<string> split(const string& str, char delimiter){ // 待分割的字符串,分隔符
vector<string> tokens;
istringstream iss(str);
string token;
while(getline(iss, token, delimiter)){
tokens.push_back(token);
}
return tokens;
}