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
相关产品推荐
相关产品推荐

