c++ string 分割
时间: 2024-09-12 19:16:53 浏览: 48
在 C++ 中,`std::string` 类型通常用于处理文本数据。如果你想要将一个字符串按照特定分隔符分割成多个子串,可以使用 `std::getline()` 函数结合容器(如 `std::vector` 或 `std::list`)或者 `std::stringstream` 来实现。
**方法一:使用 getline() 和 vector(线性空间复杂度)**
```cpp
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
vector<string> splitString(const string& str, char delimiter) {
vector<string> result;
stringstream ss(str);
string token;
while (getline(ss, token, delimiter)) {
result.push_back(token);
}
return result;
}
int main() {
string input = "apple,banana;cherry";
char delimiter = ',';
auto substrings = splitString(input, delimiter);
for (const auto& s : substrings) {
cout << s << endl;
}
return 0;
}
```
**方法二:使用 stringstream(内存效率更高)**
```cpp
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
vector<string> splitString(const string& str, char delimiter) {
stringstream ss(str);
string token;
vector<string> result;
while (getline(ss, token, delimiter)) {
result.push_back(token);
}
return result;
}
// 使用同上
```
在这个例子中,我们首先创建了一个 `std::stringstream`,然后通过不断读取直到遇到指定分隔符来获取每个子串,并将其添加到结果向量中。
阅读全文