首页 > 解决方案 > 从文本文件中读取并保存到列表

问题描述

我试图从一个名为 的文件中读取,该文件stock.txt包含以下值:

ID、项目、颜色、尺寸、数量、价格

11,T-shirt,blue,XL,2,10.500000
12,Supreme,red,M,10,20.500000
13,BANG,red,M,10,20.500000

我想将每个项目存储在矢量列表中,我该怎么做?

int main() {
        ifstream infile;
        infile.open("Stock.txt");

        string id; string title; string colour; string size; string quantity; string cost;

        //If file open is successful
        while(infile.good()){
            getline(infile,id,',');
            getline(infile,title,',');
            getline(infile,colour,',');
            getline(infile,size,',');
            getline(infile,quantity,',');
            getline(infile,cost,'\n');        
        }

        infile.close();
}

然后目标是实现一个搜索功能,我可以从该列表中搜索特定项目(例如通过使用 ID 或标题)

标签: c++

解决方案


在您的数据结构和代码之间创建一些协同作用:

struct stock_item
{
    std::string id;
    std::string title;
    std::string colour;
    std::string size;
    int quantity;
    double cost;
};

一旦您能够stock_item从文件中的一行创建一个,您就可以轻松地在任何地方/以任何方式存储和操作它:

std::vector<stock_item> some_vector;
stock_item some_stock_item;
// ...
some_vector.push_back(some_stock_item);
// ...
for (auto const& item : some_vector) {
    std::cout << "Item #" << item.id << '\n';
}

所以你需要解析那个文件:

auto stocks_from_stream(std::istream& in)
{
    std::vector<stock_item> result;
    std::string stock_line;
    while(std::getline(in, stock_line)) {
        auto item = stock_from_string(stock_line);
        result.push_back(item);
    }
    return result;
}

然后你需要定义这个stock_from_string函数:

auto stock_from_string(std::string const& line)
{
    stock_item result;
    // parse your line here
    return result;
}

瞧!


推荐阅读