You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++入门者技术需求:从输入流提取数据至整数与字符串数组

实现输入流数据的类型分离(整数/字符串数组)

嘿,刚入门C++就搞数据处理,不错嘛!针对你要把输入里的价格和描述分别存到数组的需求,我给你整理了一个清晰的实现方案,一步步来~

核心思路

  • 先逐行读取输入内容(不管是从控制台还是文件)
  • 对每一行,先提取开头的整数价格,剩下的全部内容作为描述字符串
  • 用vector来存储数据(比静态数组灵活,不用提前知道行数,入门阶段更省心)

完整代码示例

#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <fstream> // 读取文件时需要这个头文件

using namespace std;

int main() {
    // 定义存储价格和描述的动态容器(相当于自动扩容的数组)
    vector<int> priceArray;
    vector<string> descArray;
    string currentLine;

    // --- 二选一:选择输入方式 ---
    // 方式1:读取控制台输入
    // istream& input = cin;

    // 方式2:读取本地文件(替换成你的文件名)
    ifstream inputFile("input_data.txt");
    if (!inputFile.is_open()) {
        cerr << "哎呀,打不开输入文件!检查下路径对不对~" << endl;
        return 1;
    }
    istream& input = inputFile;

    // 逐行处理输入内容
    while (getline(input, currentLine)) {
        // 把当前行转成可拆分的输入流,方便提取数据
        istringstream lineStream(currentLine);
        int price;

        // 先尝试读取开头的整数价格
        if (lineStream >> price) {
            priceArray.push_back(price);

            // 跳过价格后面的空格,读取剩下的全部内容作为描述
            string description;
            getline(lineStream >> ws, description);
            descArray.push_back(description);
        } else {
            // 遇到格式错误的行,打印警告并跳过
            cerr << "警告:这行格式有问题,跳过啦:" << currentLine << endl;
        }
    }

    // 可选:验证提取结果是否正确
    cout << "\n提取到的价格数组:" << endl;
    for (int p : priceArray) {
        cout << p << " ";
    }
    cout << "\n\n提取到的描述数组:" << endl;
    for (const string& desc : descArray) {
        cout << "- " << desc << endl;
    }

    // 如果是读取文件,记得关闭文件流
    if (inputFile.is_open()) {
        inputFile.close();
    }

    return 0;
}

关键细节解释

  • getline(input, currentLine):保证每次读取完整的一行,不会被空格截断,完美适配你的输入格式
  • istringstream:把字符串转换成输入流,这样就能用>>运算符轻松提取开头的整数
  • lineStream >> ws:这个细节很重要!它会跳过价格后面的所有空白字符(空格、制表符等),确保getline能读到完整的描述,不然会得到空字符串
  • vector:不用提前定义数组大小,新增数据直接用push_back,避免了新手容易踩的数组越界坑

测试效果

比如输入内容是:

5000 Leather Seats
1000 DVD System
800 10 Speakers

程序会输出:

提取到的价格数组:
5000 1000 800 

提取到的描述数组:
- Leather Seats
- DVD System
- 10 Speakers

内容的提问来源于stack exchange,提问作者Ben Bowald

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:27:50