C++常用字符串分割方法
在C++中,对于字符串分割的需求,有很多种方法可以实现。下面将介绍一些常用的方法。
方法一:使用istringstream
可以使用C++标准库中的istringstream类来实现字符串分割。istringstream类是保存输入流的一个类,单位操作是单词,而一个单词以空格作为分隔符。
代码实现如下:
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
int main() {
std::string str = "hello world, hi c++, haha";
std::istringstream ss(str);
std::vector<std::string> result;
std::string word;
while (ss >> word) {
result.push_back(word);
}
for (auto w : result) {
std::cout << w << std::endl;
}
return 0;
}
在代码中,首先声明一个输入流对象istringstream,并将字符串传入。然后通过while循环,将单词一个一个地取出,然后放入一个vector容器中。最后,遍历vector容器,输出每一个单词。
方法二:使用C函数strtok()
C语言中的strtok()函数也可以用于字符串分割,它的原理是将一个字符串分解为一组子字符串,分割符为指定的分隔符。
代码实现如下:
#include <iostream>
#include <string>
#include <cstring>
#include <vector>
int main() {
std::string str = "hello world, hi c++, haha";
const char* delim = " ,";
char* str_c = new char[str.size() + 1];
std::strcpy(str_c, str.c_str());
char* token = std::strtok(str_c, delim);
std::vector<std::string> result;
while (token != nullptr) {
result.push_back(token);
token = std::strtok(nullptr, delim);
}
delete[] str_c;
for (auto w : result) {
std::cout << w << std::endl;
}
return 0;
}
首先我们将字符串转换为C字符串,使用strtok()函数进行分割,得到每一个子字符串,然后将子字符串存储到一个vector容器中。最后,遍历vector容器,输出每一个单词。
方法三:使用boost库中的split函数
除了C++标准库提供的istringstream类和C语言中的strtok()函数,还可以使用boost库中的split函数来实现字符串分割。这个函数可以将一个字符串分割成多个子字符串,并将子字符串存储到一个vector容器中。
代码实现如下:
#include <iostream>
#include <string>
#include <vector>
#include <boost/algorithm/string.hpp>
int main() {
std::string str = "hello world, hi c++, haha";
std::vector<std::string> result;
boost::split(result, str, boost::is_any_of(" ,"));
for (auto w : result) {
std::cout << w << std::endl;
}
return 0;
}
在代码中,使用split()函数,将一个字符串分割为多个字符串,并将它们存储在一个vector容器中。最后,遍历vector容器,输出每一个子字符串。
以上就是几种常用的C++字符串分割方法,开发者可以根据实际需求选择不同的方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c++常用字符串分割方法 - Python技术站