21xrx.com
2025-03-31 10:45:11 Monday
文章检索 我的文章 写文章
C++字符串(string)的切割方法
2023-06-26 22:36:19 深夜i     9     0
C++字符串 字符串切割 String类 stringstream类 分隔符

C++字符串(string)的切割方法

C++中的字符串(string)是一个常用的数据类型,我们在开发程序时通常会遇到需要对字符串进行切割的情况,比如我们需要将一句话按空格分割成若干个单词,或者将一个文件路径按照斜杠切割成若干个目录。那么如何在C++中实现字符串的切割呢?下面介绍几种常用的方法。

方法一:使用字符串流

#include

std::vector split(const std::string& s, char delimiter) {

  std::vector tokens;

  std::string token;

  std::istringstream tokenStream(s);

  while (std::getline(tokenStream, token, delimiter)) {

   tokens.push_back(token);

  }

  return tokens;

}

使用该方法很简单,只需要传入待切割的字符串和分割符即可,返回一个包含切割结果的vector容器。

方法二:使用boost库

使用boost库可以更加方便地实现字符串的切割。boost库提供了一个Tokenizer类,它可以将一个字符串按照指定的分隔符切割成若干个子串。

#include

std::vector split(const std::string& s, char delimiter) {

  std::vector tokens;

  boost::tokenizer > tokenizer(s, boost::char_separator (&delimiter));

  for (const auto& token : tokenizer) {

   tokens.push_back(token);

  }

  return tokens;

}

方法三:使用STL中的algorithm库

使用STL中的algorithm库可以更加简洁地实现字符串的切割。

#include

#include

#include

#include

std::vector split(const std::string& s, char delimiter) {

  std::vector tokens;

  std::istringstream tokenStream(s);

  std::string token;

  while (std::getline(tokenStream, token, delimiter)) {

   tokens.push_back(token);

  }

  return tokens;

}

总结

通过以上三种方法,我们可以在C++中快速、方便地实现字符串的切割。具体选择哪种方法取决于实际情况和个人喜好。

  
  

评论区