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

时间:2015-04-12 05:14:14

标签: c++ arrays csv

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

您将能够使用csv [row] [column]

访问该元素

cvs.count()是行数,cvs [row] .count()是行中元素的数量。

容易......祝你好运!

答案 1 :(得分:0)

详细信息将取决于您正在做什么,但一个常见的解决方案是拥有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;
}