You need to enable JavaScript to run this app. C++如何将函数拆分字符串得到的输出值存储到数组中
优惠活动
大模型
产品
解决方案
定价
更多

C++如何将函数拆分字符串得到的输出值存储到数组中

实现方案

你可以使用C++ STL提供的std::vector容器存储拆分结果,无需提前指定数组长度,适配任意拆分出的元素数量,修改后的代码如下:

#include <iostream>
#include <string>
#include <sstream>
#include <vector>

using namespace std;

// 函数返回vector<string>,存储所有拆分后的单词
vector<string> cola(string str)
{
    string word;
    stringstream iss(str);
    vector<string> res; // 存储结果的容器

    while (iss >> word)
    {
        res.push_back(word); // 拆分出的单词存入容器
    }
    return res;
}

int main()
{
    string s = "cola coke 3";
    vector<string> result_arr = cola(s); // 拿到拆分后的数组
    
    // 以下是验证打印逻辑,可根据需求删除
    for (int i = 0; i < result_arr.size(); i++)
    {
        cout << "第" << i+1 << "个元素:" << result_arr[i] << endl;
    }
    return 0;
}

关键改动说明

  • 修改cola函数返回值类型为vector<string>,替代原有的无意义int返回值
  • 拆分过程中不再直接打印单词,而是调用push_back方法存入结果容器
  • main函数中调用cola方法即可直接获得存储所有拆分结果的类数组结构,支持按下标访问元素,用法和普通数组完全一致

原生数组实现方案(可选)

如果业务要求必须使用原生数组,可先统计拆分出的元素总数,再动态申请对应长度的数组存储:

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

// 第二个参数用来接收拆分出的元素数量
string* cola(string str, int &len)
{
    string word;
    stringstream iss(str);
    len = 0;
    // 第一次遍历统计元素数量
    while (iss >> word) len++;
    // 申请对应长度的数组
    string *arr = new string[len];
    // 重置流指针,重新读取字符串
    iss.clear();
    iss.seekg(0, ios::beg);
    int idx = 0;
    while (iss >> word)
    {
        arr[idx++] = word;
    }
    return arr;
}

int main()
{
    string s = "cola coke 3";
    int len;
    string* result_arr = cola(s, len);
    
    // 验证打印
    for (int i = 0; i < len; i++)
    {
        cout << result_arr[i] << endl;
    }
    
    // 数组使用完毕后记得释放堆内存,避免内存泄漏
    delete[] result_arr;
    return 0;
}

内容的提问来源于stack exchange,提问作者Hammad Ashraf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 12:06:02