c++ 按,分割字符串 多种方式
时间: 2023-08-17 13:39:43 浏览: 100
除了使用 stringstream 和 getline 函数之外,C++ 中还有其他多种方式可以实现按照指定分隔符分割字符串。
1. 使用 strtok 函数
strtok 函数可以用来将字符串按照指定的分隔符进行分割。示例代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str[] = "hello,world,how,are,you";
char* token = strtok(str, ",");
while (token != nullptr) {
cout << token << endl;
token = strtok(nullptr, ",");
}
return 0;
}
```
输出结果与上面的示例代码相同。
在上面的代码中,我们将字符串 str 传给 strtok 函数,并指定分隔符为逗号。strtok 函数会返回第一个子串的指针,我们可以使用循环不断调用 strtok 函数来获取后续的子串。
需要注意的是,strtok 函数会修改原始字符串,将分隔符替换为 '\0',因此在循环中需要将第二个参数设为 nullptr,以便 strtok 函数继续从上一次的位置开始查找。
2. 使用 boost 库
如果你使用的是 boost 库,可以使用 boost::split 函数来实现字符串分割。示例代码:
```c++
#include <iostream>
#include <vector>
#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost;
int main() {
string str = "hello,world,how,are,you";
vector<string> tokens;
split(tokens, str, is_any_of(","));
for (const auto& token : tokens) {
cout << token << endl;
}
return 0;
}
```
输出结果与前面的示例代码相同。
在上面的代码中,我们使用 boost::split 函数将字符串 str 按照逗号分隔符分割,并将分割后的子串存储在 vector 类型的 tokens 中。最后循环输出每个子串即可。
需要注意的是,使用 boost 库需要先在项目中添加相应的头文件和库文件。
阅读全文