21xrx.com
2025-03-28 14:18:54 Friday
文章检索 我的文章 写文章
C++中如何将字符串转换成数组
2023-06-29 11:13:57 深夜i     24     0
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算法。使用这些方法可以方便地将字符串转换成数组,帮助我们在实际编程中更好地处理数据。

  
  

评论区