21xrx.com
2024-11-10 00:35:52 Sunday
登录
文章检索 我的文章 写文章
C++字符串分割方法
2023-07-10 10:45:15 深夜i     --     --
C++ 字符串 分割方法 算法 字符数组

在C++编程中,有时候需要对字符串进行分割,将一个字符串切分成若干个子串。这在文本处理、数据分析等领域非常常见。本文将介绍C++字符串分割的几种方法。

方法一:使用STL库中的stringstream类

stringstream是一个自带缓冲区的类,可以将字符串按照指定的分隔符分割成若干个子串,非常方便快捷。

代码示例:


#include <iostream>

#include <string>

#include <sstream>

using namespace std;

int main()

{

  string str = "C++ is a powerful programming language!";

  stringstream ss(str); //把str转化为stringstream

  string sub_str;

  while (getline(ss, sub_str, ' '))

  

    cout << sub_str << endl;

  

  return 0;

}

以上代码将会将原字符串中的每个单词分割成一个子串,并输出到控制台中。

方法二:使用C库函数

C语言中的字符串分割函数strtok也可以用于C++程序的字符串分割。使用strtok需要包含头文件cstring。

代码示例:


#include <iostream>

#include <string>

#include <cstring>

using namespace std;

int main()

{

  string str = "C++ is a powerful programming language!";

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

  strcpy(cstr, str.c_str()); //将string转成char*

  char* p = strtok(cstr, " ");

  while (p != NULL)

  {

    cout << p << endl;

    p = strtok(NULL, " ");

  }

  delete[] cstr;

  return 0;

}

以上代码将会和上一种方法一样的输出结果。

方法三:使用boost库

boost库是一个非常强大和流行的C++开源库,以其提供的字符串分割工具而著称。需要先安装boost库才能正常使用。

代码示例:


#include <iostream>

#include <string>

#include <boost/algorithm/string.hpp>

using namespace std;

using namespace boost;

int main()

{

  string str = "C++ is a powerful programming language!";

  vector<string> v;

  split(v, str, is_space()); //用空格分割字符串,存放到vector中

  for (auto s : v)

  

    cout << s << endl;

  

  return 0;

}

以上代码使用boost库中的split函数对原字符串进行了分割,并使用容器vector存放分割后的子串。代码相比前两种方法更加简洁。

综上所述,C++中有多种方法可以进行字符串分割。根据个人习惯和具体情况选择合适的方法是非常重要的。

  
  

评论区

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