📅  最后修改于: 2023-12-03 15:10:06.979000             🧑  作者: Mango
拆分字符串是 C++ 开发中常用的技巧之一。C++ 中提供了多种拆分字符串的方法,我们可以使用标准库中的方法或者自己编写函数实现字符串的拆分,以便更好地处理字符串数据。
stringstream
是 C++ 中的流类,该类可以将字符串转换为单个词语,并使用空格字符作为默认的分隔符。以下是使用 stringstream
进行字符串拆分的示例代码:
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
std::vector<std::string> split(const std::string& str)
{
std::vector<std::string> result;
std::stringstream ss(str);
std::string token;
while (std::getline(ss, token, ' ')) {
result.push_back(token);
}
return result;
}
int main()
{
std::string s = "Hello World C++";
std::vector<std::string> tokens = split(s);
for (const auto& token : tokens) {
std::cout << token << "\n";
}
return 0;
}
在该示例代码中,我们定义了一个 split()
函数来拆分字符串。该函数使用 stringstream
将字符串 str
分解成单个单词。然后,我们使用 getline()
函数从 stringstream
中读取每个单词,并将其添加到 vector
中,最后返回 vector
。
strtok()
是 C 语言中的函数,也可以被用于 C++ 中来拆分字符串。以下是使用 strtok()
函数实现字符串拆分的示例代码:
#include <iostream>
#include <cstring>
#include <vector>
std::vector<std::string> split(const char* str, const char* delimiters = " ")
{
std::vector<std::string> result;
char* token = std::strtok(const_cast<char*>(str), delimiters);
while (token != nullptr) {
result.push_back(std::string(token));
token = std::strtok(nullptr, delimiters);
}
return result;
}
int main()
{
const char* s = "Hello World C++";
std::vector<std::string> tokens = split(s);
for (const auto& token : tokens) {
std::cout << token << "\n";
}
return 0;
}
在该示例代码中,我们定义了一个 split()
函数来拆分字符串。该函数使用 strtok()
函数将字符串 str
分解成单个单词。然后,我们使用 push_back()
函数将每个单词添加到 vector
中,最后返回 vector
。
以上就是使用 stringstream
和 strtok()
进行字符串拆分的方法。这些方法都可以方便地处理字符串数据,并且使用方便。我们可以根据实际需求来选择使用哪种方法进行字符串拆分。