21xrx.com
2025-03-26 12:18:53 Wednesday
文章检索 我的文章 写文章
如何将C++中的字符串分割成数组
2023-07-10 09:36:32 深夜i     --     --
C++ 字符串 分割 数组 函数

在C++中,对字符串进行分割是一种常见的操作,特别是在处理文件或网络数据时。本文将介绍如何将C++中的字符串分割成数组。

使用STL库中的stringstream类

STL库中的stringstream类可以将字符串转换成流(流是一种数据类型,表示以序列形式传输的数据),并且提供了一些方法来操作这些数据。使用stringstream时,需要包含头文件

首先,将要分割的字符串传入sstream对象中:

#include <sstream>
#include <string>
using namespace std;
int main() {
  string str = "hello,world,how,are,you";
  stringstream ss(str);
  return 0;
}

接下来,使用getline方法从stringstream对象中读取每个单词,并将其添加到一个vector中:

#include <sstream>
#include <string>
#include <vector>
using namespace std;
int main() {
  string str = "hello,world,how,are,you";
  stringstream ss(str);
  vector<string> words;
  string word;
  while(getline(ss, word, ',')) {
    words.push_back(word);
  }
  return 0;
}

在这里,使用getline方法从sstream对象中读取每个单词,直到遇到逗号。当读取到逗号时,getline方法将停止,并将读取到的单词存储在word变量中。然后,使用vector的push_back方法将单词添加到words向量中。

现在,words向量中包含了原始字符串中的每个单词,可以进一步将其转换为数组:

#include <sstream>
#include <string>
#include <vector>
using namespace std;
int main() {
  string str = "hello,world,how,are,you";
  stringstream ss(str);
  vector<string> words;
  string word;
  while(getline(ss, word, ',')) {
    words.push_back(word);
  }
  int n = words.size();
  string* arr = new string[n];
  for(int i = 0; i < n; i++) {
    arr[i] = words[i];
  }
  delete[] arr;
  return 0;
}

在这里,使用new运算符动态分配了一个字符串数组。然后,使用循环将向量中的每个单词赋值给该数组。最后,使用delete[]运算符将动态分配的数组释放。

在本章中,通过介绍使用stringstream类将C++字符串分割成数组,可以有效地处理文件或网络数据。此外,使用动态分配的数组时,需要小心处理内存的分配和释放,以避免内存泄漏。

  
  

评论区