21xrx.com
2024-11-08 21:09:45 Friday
登录
文章检索 我的文章 写文章
C++字符串分割技巧
2023-07-01 10:56:51 深夜i     --     --
C++ 字符串 分割 技巧 字符串处理

在C++中,字符串是一种非常重要的数据类型。在实际编程中,字符串的分割操作经常会遇到,如将一个字符串按照某个字符或者字符串进行分割。本文将介绍C++中常用的字符串分割技巧。

1.使用stringstream

stringstream类是C++中一个非常有用的字符串处理类,它可以将字符串按照指定的分隔符进行切割,并将切割后的字符串转化为任意类型的变量。

以下是stringstream的用法示例:


#include <sstream>

#include <iostream>

#include <string>

int main()

{

  std::string s = "hello world!";

  std::stringstream ss(s);

  std::string item;

  while(std::getline(ss, item, ' '))

    std::cout << item << std::endl;

  

  return 0;

}

上述代码中,我们将字符串s按照空格分割,并输出分割后的结果。

2.使用STL的split函数

使用STL的split函数也是一种常用的字符串分割技巧。split函数可以将字符串按照指定的分隔符进行切割并存储到一个容器中。

以下是split函数的用法示例:


#include <iostream>

#include <string>

#include <vector>

#include <algorithm>

std::vector<std::string> split(const std::string &str, const std::string &delim)

{

  std::vector<std::string> res;

  if("" == str) return res;

  char *strs = new char[str.length() + 1];

  std::strcpy(strs, str.c_str());

  char *d = new char[delim.length() + 1];

  std::strcpy(d, delim.c_str());

  char *p = std::strtok(strs, d);

  while(p) {

    std::string s = p;

    res.push_back(s);

    p = std::strtok(nullptr, d);

  }

  delete[] strs;

  delete[] d;

  return res;

}

int main()

{

  std::string s = "hello,world!";

  std::vector<std::string> vc = split(s, ",");

  std::for_each(vc.begin(), vc.end(), [](std::string s) std::cout << s << std::endl; );

  return 0;

}

上述代码中,我们将字符串s按照逗号分割,并将切割后的结果存储到vector容器中,并输出容器中的元素。

以上就是C++中常用的字符串分割技巧,根据实际需要选择合适的方法来分割字符串,可以使程序更加高效和易于维护。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复