如何从.txt文件中读取CSV列表,并将每个项目分成各自的数组

问题描述 投票:0回答:1

以下是我正在使用的列表:绘画,150.10,10灯100.20,10地毯,200.00,10时钟,100.00,10雕塑,300.00,10摄影,200.00,10陶器,100.00,10手表,300.00,10韦奇伍德,70.00,10瓷砖,500.00,10

到目前为止,我已经提出了这个建议以分隔项目并出现错误:

ifstream file("antiquelist.txt");
string name;
float price;
int quantity;
while(file.good()){
    getline(file, name, ',', price, ',', quantity);
    cout << name << endl;
c++ arrays csv getline
1个回答
0
投票

您需要使用默认的tokenizer参数通过getline获取新的数据行,并使用逗号','作为tokenizer参数来解析getline的每一行数据。

#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <fstream>
using namespace std;

struct Data {
    string m_name;
    float m_price;
    int m_quantity;
};

int main() {
    ifstream file("antiquelist.txt");
    string line;
    std::vector<Data> items;
    Data rowData;

    while (getline(file, line)) {
        stringstream splitter(line);

        string dataStr;

        getline(splitter, dataStr, ',');
        rowData.m_name = dataStr;

        getline(splitter, dataStr, ',');
        stringstream(dataStr) >> rowData.m_price;

        getline(splitter, dataStr);
        stringstream(dataStr) >> rowData.m_quantity;

        items.push_back(rowData);
    }

    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.