c ++初学者,刚刚遇到我的第一个堆栈溢出错误!
我已经创建了一个程序,可以解析当时一行中的两个非常大的文件(几百万行)。下面的子函数获取两个ifstream对象(& referencePop和& wantedPop)并使用fstreams getline()解析它们。
由于文件中的几行真的很大,我不得不增加我的charBuf数组的大小,但最终我的程序因堆栈溢出错误而崩溃...如果我也这样做了while循环在到达eof之前会断开,如果它们太大=溢出......
我有一个完全不同的程序版本,使用std :: string和std :: stringstream进行解析,设法解析整个文件,然而却非常缓慢。我想尝试使用下面的内容并比较性能......
有没有办法改变我的charBuf数组大小以匹配每行的getline?许多行只会是几个字符(char [128]应该足够了)...在这些行上有不必要的大字符数组会有性能影响吗?
char charBufA[512000], charBufB[512000];
char *next_tokenA = NULL;
char *next_tokenB = NULL;
bool nextLine;
int counter=0,nOfLines=0, intBufA, intBufB;
double testValue;
while(referencePop.getline(charBufA,512000)&&wantedPop.getline(charBufB,512000)){
nOfLines++;
nextLine=true;
char* charBufAP = strtok_s(charBufA,"\t", &next_tokenA);
char* charBufBP = strtok_s(charBufB,"\t", &next_tokenB);
a lot more operations...
}