21xrx.com
2024-09-20 05:29:46 Friday
登录
文章检索 我的文章 写文章
C++中如何将字符串转换成数组
2023-06-29 11:13:57 深夜i     --     --
C++ 字符串 数组 转换

在C++中,字符串是一种常用的数据类型。当我们需要将字符串转换成数组时,可以使用一些内置函数和算法来完成。本文将介绍如何将字符串转换成数组,让读者学会如何应用在实际的编程中。

1.使用字符串流

C++中提供了字符串流来方便将字符串转换成数组。我们可以使用stringstream来将字符串分割成数组元素,代码如下:


#include<iostream>

#include<sstream>

using namespace std;

int main(){

  string str="1,2,3,4,5";

  stringstream ssin(str);

  int arr[5];

  for(int i=0;i<5;i++){

    ssin>>arr[i];

    if(ssin.fail())

      cout<<"Error"<<endl;

      break;

    

  }

  for(int i=0;i<5;i++){

    cout<<arr[i]<<" ";

  }

  return 0;

}

这里将一个字符串"1,2,3,4,5"转换成了一个整型数组arr。

2.使用字符串拆分函数

C++也提供了字符串拆分函数来把字符串拆分成一个字符串数组,然后再将字符串数组转化成对应的类型,代码如下:


#include<iostream>

#include<vector>

#include<sstream>

using namespace std;

template<typename T>

vector<T> split(const string&str,const char&delim){

  stringstream ss(str);

  string item;

  vector<T> elems;

  while(getline(ss,item,delim)){

    T e=0;

    stringstream ssin(item);//stringstream转换成对应类型

    ssin>>e;

    elems.push_back(e);

  }

  return elems;

}

int main(){

  string str="1,2,3,4,5";

  vector<int>arr=split<int>(str,',');//将字符串拆分成以逗号分隔的整型数组

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

    cout<<arr[i]<<" ";

  }

  return 0;

}

3.使用STL算法

STL中提供了split函数,可以直接将字符串拆分成一个字符串数组,代码如下:


#include<iostream>

#include<string>

#include<vector>

#include<algorithm>

using namespace std;

vector<string> split(string str,char delim){

  vector<string>elems;

  stringstream ss(str);

  string item;

  while(getline(ss,item,delim)){

    elems.push_back(item);

  }

  return elems;

}

int main(){

  string str="1,2,3,4,5";

  vector<string>arr=split(str,',');//将字符串转换成字符串数组

  vector<int> res;

  transform(arr.begin(),arr.end(),back_inserter(res),[](string s){

    return stoi(s);//将字符串数组转换成整型数组

  });

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

    cout<<res[i]<<" ";

  }

  return 0;

}

上述方法可以使用STL算法提供的transform函数,将字符串数组转化成对应类型的数组。

总结

本文中我们学习了使用三种方法将字符串转换成数组,分别使用了字符串流、字符串拆分函数和STL算法。使用这些方法可以方便地将字符串转换成数组,帮助我们在实际编程中更好地处理数据。

  
  

评论区

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