将给定的两个数组合并为一个新的数组,并将新数组进行降序排序。(C++)(字符串和数组的转化)

在这里插入图片描述

#include <iostream>
#include <vector>
#include <algorithm>
#include <sstream>   //
using namespace std;


//字符串转化为数组
vector<int> stringtointArray(string str) {
    vector<int> intArray;//声明一个数组
    stringstream ss(str); 
    string buf;

    while(getline(ss, buf, ',')) {  //以逗号为分隔,一次读一个字符,buf每次被重写,存储最新的 
        int num = stoi(buf);  //将字符转换为整数
        intArray.push_back(num);
    }
    return intArray; //返回数组

}

//合并数组并降序排序
vector<int> mergeAndSort(vector<int> arr1, vector<int> arr2){
    vector<int> mergedAarry;
    for(auto num : arr1) {
        mergedAarry.push_back(num);
    }
    for(auto num : arr2) {
        mergedAarry.push_back(num);
    }
    sort(mergedAarry.begin(), mergedAarry.end(), [](int a, int b){  //sort默认从小到大排 
        return a > b;
    });
    return mergedAarry;
}


//int数组转化为字符串
string intArrayToString(vector<int> intArray) {
    stringstream ss;				//创建一个空的 std::stringstream 对象 ss,用于构建输出字符串 
    for(auto num : intArray) {
        ss<<num<<",";				//将每个整数元素写入 ss 中,并以逗号作为分隔符
    }
        string str = ss.str();    //将 ss 转换为字符串,使用 ss.str() 函数获取 ss 中的字符串表示

		//如果整数数组为 [1, 2, 3],则函数将返回字符串 "1,2,3"。 
        if(!str.empty()){
            str.pop_back();		 //检查字符串是否为空,如果不为空,则删除最后一个字符(逗号) 
        }

        return str;
}



int main() {
    string str1, str2;              
    getline(cin, str1);
    getline(cin, str2);
    vector<int> arr1 = stringtointArray(str1);
    vector<int> arr2 = stringtointArray(str2);

    vector<int> mergedSortedArray = mergeAndSort(arr1, arr2);
    cout << intArrayToString(mergedSortedArray)<<endl;
    return 0;
    
}
// 64 位输出请用 printf("%lld")

stringstream:基于字符串的流,用于处理字符串的输入和输出操作。

在这里插入图片描述

#include <iostream>
#include <sstream>

int main() {
    std::string str = "Hello, World!";
    std::stringstream ss(str);  // 创建一个 stringstream 对象,并使用 str 初始化

    std::string word;
    while (ss >> word) {  // 从 stringstream 中提取单词
        std::cout << word << std::endl;
    }

    return 0;
}


	

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值