📜  拆分文本 C++ (1)

📅  最后修改于: 2023-12-03 15:10:06.979000             🧑  作者: Mango

拆分文本 C++

拆分字符串是 C++ 开发中常用的技巧之一。C++ 中提供了多种拆分字符串的方法,我们可以使用标准库中的方法或者自己编写函数实现字符串的拆分,以便更好地处理字符串数据。

使用 stringstream

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 函数

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

总结

以上就是使用 stringstreamstrtok() 进行字符串拆分的方法。这些方法都可以方便地处理字符串数据,并且使用方便。我们可以根据实际需求来选择使用哪种方法进行字符串拆分。