我正在尝试读取具有超过170000行,每项10列的csv文件。
我使用c++(在Visual Studio 2017中)编写了此代码以读取它,但是在失败之前它只能读取3600个条目。

// Trial1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <sstream>

using namespace std;
int main()
{

    ifstream file("Brightest Day.csv");

    if (!file.is_open())
    {
        cout << "ERROR: File Open" << "\n";
    }

    string data[3000][10];

    for (long i = 0; i < 3000; i++)
    {

            for (int j = 0; j < 10; j++)
            {
                getline(file, data[i][j], ',');

            }

    }

    for (long i = 0; i < 3000; i++)
    {

        for (int j = 0; j < 10; j++)
        {
            cout<<data[i][j]<<" | ";
            if (j == 10)
            {
                cout << "\n";
            }
        }
    }
    return 0;
}

即使它只能读取10000个条目,我也称它为成功

最佳答案

您正在溢出堆栈。欢迎来到这个网站。

您的调用堆栈设计用于在编译时已知大小的小对象。这就是为什么your rubber ducky is wondering来自3000的原因。这是一个猜测,任何创建3001行csv的人都可能会使您的程序崩溃。如果您认为10000行是成功的,那么10001行就是崩溃。

使用 std::vector 。这是一个类似数组的结构。它管理自己的大小。而且它不会将您的数据存储在有限的堆栈中。

关于c++ - 将大型csv文件读入数组c++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50337872/

10-12 07:35
查看更多