21xrx.com
2024-11-10 00:44:18 Sunday
登录
文章检索 我的文章 写文章
C++字符串切割
2023-06-29 01:17:12 深夜i     --     --
C++ 字符串 切割

在C++编程中,经常需要对字符串进行切割操作。字符串切割是指将一个字符串按照指定的分隔符进行分割,并将分割结果存储在一个数组或向量中。这项操作在各种计算机应用程序中都有着广泛的应用,例如文本处理、数据解析、网络通信等。

下面介绍几种常用的字符串切割方法:

方法一:利用strtok函数。

strtok函数是C语言中对字符串进行切割的常用函数,可以将一个字符串按照指定的分隔符进行切割。在C++中,可以在string类对象中调用c_str()函数,将其转换为C风格的字符串,再通过strtok函数进行切割。

以下是一个使用strtok函数切割字符串的示例代码:


#include <iostream>

#include <cstring>

using namespace std;

int main() {

  string str = "apple,banana,orange,peach";

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

  strcpy(c_str, str.c_str());

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

  while (p) {

    cout << p << endl;

    p = strtok(NULL, ",");

  }

  delete[] c_str;

  return 0;

}

输出结果为:


apple

banana

orange

peach

方法二:利用stringstream类。

stringstream类是C++ STL库中的一个类,可以对字符串进行分词。该类可以将一个字符串以流的形式读入,然后根据指定的分隔符进行分词。

以下是一个使用stringstream类切割字符串的示例代码:


#include <iostream>

#include <sstream>

#include <string>

#include <vector>

using namespace std;

int main() {

  string str = "apple,banana,orange,peach";

  vector<string> vect;

  stringstream ss(str);

  string token;

  while (getline(ss, token, ',')) {

    vect.push_back(token);

  }

  for (int i = 0; i < vect.size(); i++) {

    cout << vect[i] << endl;

  }

  return 0;

}

输出结果为:


apple

banana

orange

peach

方法三:利用boost库。

boost库是C++中一个流行的开源库,其中包含了许多高质量的实用工具。在boost库中,可以使用split函数将一个字符串按照指定的分隔符进行分割。使用该函数需要引入 头文件。

以下是一个使用boost库切割字符串的示例代码:


#include <iostream>

#include <string>

#include <vector>

#include <boost/algorithm/string.hpp>

using namespace std;

using namespace boost;

int main() {

  string str = "apple,banana,orange,peach";

  vector<string> vect;

  split(vect, str, is_any_of(","));

  for (int i = 0; i < vect.size(); i++) {

    cout << vect[i] << endl;

  }

  return 0;

}

输出结果与方法二相同。

总结:以上三种方法都是常用的字符串切割方法。一般来说,如果只需要简单的字符串分割操作,建议使用stringstream类或boost库中的split函数。如果需要高效地处理大量数据,可以考虑使用strtok函数,但需要注意内存管理问题。

  
  

评论区

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