21xrx.com
2024-06-03 05:47:28 Monday
登录
文章检索 我的文章 写文章
如何将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++字符串分割成数组,可以有效地处理文件或网络数据。此外,使用动态分配的数组时,需要小心处理内存的分配和释放,以避免内存泄漏。

  
  

评论区

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