尝试将.csv数据复制到c ++中的结构时出现堆栈溢出错误

时间:2013-12-15 08:09:23

标签: c++ structure stack-overflow

我正在尝试将.csv文件读入c ++算法,并且我试图将每个列存储在结构中构建的不同字符串数组中。我正在做好工作,直到出现堆栈溢出错误。< / p>

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>

using namespace std;
struct burgerking //structure containing different strings for each column in .csv file
{
    string longitude[7000];
    string latitude[7000];
    string location[7000];
    string state[7000];
    string address[7000];
};

void main () {
    burgerking burger;
    string line;
    ifstream myfile;
    myfile.open("burgerking.csv"); //opening the csv file
    if(myfile.good())
        cout<<"File is Good to be opened"<<endl;
    int l=0;
    int n=1;
    int e=2;
    int ss=3;
    int j=0;
    int b=0;
    int kk=0;
    int ll=0;
    for(int i=0;i<40;i++)
    {
        getline(myfile,line,',');
        if(i==0)
        {
            burger.longitude[j]=line;
            j++;
            l=l+7;
        }
        if(i==l)
        {
            burger.longitude[j]=line.substr(16,line.length());
            j++;
            l=l+7;
        }
        if(i==n)
        {
            burger.latitude[b]=line;
            n=n+7;
            b++;
        }
        if(e==i)
        {
            burger.location[kk]=line;
            kk=kk+1;
            e=e+7;
        }
        if(ss==i)
        {
            burger.state[ll]=line;
            ss=ss+7;
            ll++;
        }
    }

    //myfile.close();
    //myfile.open("burgerking.csv");
    //for(int c=0;c<20;c++)
    //{
    //  getline(myfile,line,',');
    //  if(c==3)
    //  {
    //      burger.address[0]=line;
    //  }
    //}

    for(int k=0;k<1;k++)// loop just to check the program output
    {
        cout<<burger.state[k]<<endl; //just to check the output 

    }



    myfile.close();
    system("PAUSE");
}

1 个答案:

答案 0 :(得分:0)

您正在堆栈上创建一个非常大的结构。你的“汉堡”变量占用了至少140 Kb的堆栈空间,这太多了。我建议你从堆中分配它,即

burgerking* burger;
burger = new burgerking();