字符串的切割

Posted by Marlin on May 14, 2025

字符串的切割

题目描述

给定一个字符串,请实现一个函数,将该字符串按照某个字符分割,并返回一个包含每个子串的向量。

输入样例 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;
}