c++ string split
时间: 2023-10-21 11:04:43 浏览: 156
有几种在C语言中实现字符串分割的方法。下面是其中三种常见的方法:
方法1:使用strtok函数
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "hello,world,this,is,a,test";
char delim[] = ",";
char *ptr = strtok(str, delim);
while (ptr != NULL) {
printf("%s\n", ptr);
ptr = strtok(NULL, delim);
}
return 0;
}
```
方法2:使用sscanf函数
```c
#include <stdio.h>
int main() {
char str[] = "hello,world,this,is,a,test";
char delim = ',';
char item
相关问题
C++string split函数
C++标准库中的`std::getline()`函数并不是用于字符串分割的,但如果你需要将一个字符串按照特定分隔符切割成多个子串,通常会使用`std::stringstream`配合`std::getline()`或者直接遍历字符串并查找分隔符。不过,C++17之后引入了`std::split()`函数,它是 `<algorithm>` 模块的一部分,可以方便地完成这个任务。
`std::split()`函数的基本语法如下:
```cpp
template< class InputIt, class DelimiterIt, class OutputIterator >
void split( InputIt first, InputIt last, DelimiterIt delimiter_first, DelimiterIt delimiter_last,
OutputIterator result );
```
其中:
- `first` 和 `last` 是输入序列的范围,包含待分割的字符串。
- `delimiter_first` 和 `delimiter_last` 定义了分隔符的起始和结束位置。
- `OutputIterator` 类型指定了结果元素的存储位置,通常是容器的迭代器。
例如,你可以这样使用它:
```cpp
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
std::vector<std::string> splitString(const std::string& str, char delimiter) {
std::istringstream iss(str);
std::vector<std::string> tokens;
std::copy(std::istream_iterator<char>(iss),
std::istream_iterator<char>(),
std::back_inserter(tokens));
std::tokenize(tokens.begin(), tokens.end(), delimiter);
return tokens;
}
int main() {
std::string str = "Hello;World;C++";
std::vector<std::string> parts = splitString(str, ';');
for (const auto &part : parts) {
std::cout << part << '\n';
}
C++ string split()
C++ 中没有内置的字符串分割函数,但可以通过使用标准库中的 `std::stringstream` 或者使用 `std::string::find()` 和 `std::string::substr()` 等方法来实现字符串分割。
下面是使用 `std::stringstream` 的示例代码:
```c++
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
std::vector<std::string> split(const std::string& s, char delimiter) {
std::vector<std::string> tokens;
std::stringstream ss(s);
std::string token;
while (std::getline(ss, token, delimiter)) {
tokens.push_back(token);
}
return tokens;
}
int main() {
std::string text = "Hello world!";
std::vector<std::string> words = split(text, ' ');
for (const auto& word : words) {
std::cout << word << std::endl;
}
return 0;
}
```
输出结果为:
```
Hello
world!
```
在这个例子中,我们首先定义了一个名为 `split()` 的函数,该函数接受一个字符串和一个分隔符作为参数,返回一个由分割后的子字符串组成的字符串向量。在函数内部,我们使用 `std::stringstream` 将输入字符串按照分隔符进行分割,并将分割后的子字符串存储到一个字符串向量中。
需要注意的是,`std::getline()` 函数是以换行符作为默认的分隔符,因此在使用 `std::stringstream` 进行字符串分割时需要指定分隔符。
阅读全文