解析C++中逗号分隔的变量

Parsing comma separated variables in C++

本文关键字:分隔 变量 C++ 解析      更新时间:2023-10-16

我正在尝试编写一个读取 csv 文件并返回内容的函数,我认为解决方案只是一个简单的二维数组,但我能找到的唯一信息是,这不仅令人皱眉,而且从C++函数返回二维(或更多)数组的唯一方法涉及预先确定大小。

我不喜欢预定义数组大小的想法,因为在此特定上下文中,我需要设置一个数组来容纳 256TiB 的数据,因为我在读取之前无法知道文件大小。

我想知道的是这样做的正确方法是什么?

细节将取决于您正在做什么,但常见的解决方案是std::vector一个struct(其中包含字段):

// the CSV fields will be read into the struct's data members
struct record
{
    std::string name;
    std::string address;
    unsigned age;
    // ...
};
std::vector<record> read_csv(std::istream& is)
{
    std::vector<record> records;
    std::string line;
    while(std::getline(is, line))
    {
        record r;
        // populate r with CSV data in line
        records.push_back(r); // add record to vector
    }
    return records;
}

您可以使用列表数组的列表数组。

读取一行,拆分,创建一个列表数组。

将此列表数组添加到行的列表数组中,例如 cvs 列表数组。

您将能够使用 csv[行][列] 访问该元素

cvs.count() 是行数,cvs[row].count() 是行中的 elemets 数。

容易。。。祝你好运!