C++ ifstream::getline分段错误

C++ ifstream::getline分段错误,c++,multidimensional-array,char,fstream,ifstream,C++,Multidimensional Array,Char,Fstream,Ifstream,我有一个奇怪的问题。当我尝试执行以下代码时,在第一次迭代时遇到分段错误: const int lineTot = FinCurrentPopulation - DebutCurrentPopulation; const int lseq = NumLoci + 2; char seq[lineTot][lseq]; for(int line = 0; line < lineTot; line++) { int chromosome = (line - DebutCurrentPop

我有一个奇怪的问题。当我尝试执行以下代码时,在第一次迭代时遇到分段错误:

const int lineTot = FinCurrentPopulation - DebutCurrentPopulation;
const int lseq = NumLoci + 2;
char seq[lineTot][lseq];
for(int line = 0; line < lineTot; line++) {
    int chromosome = (line - DebutCurrentPopulation) % 2 + 1;
    if(chromosome == 1)
        id++;

    if(in.good()) {
        in.ignore(8, '\t');
        in.ignore(8, '\t');
        in.getline(seq[line], lseq);
    }
}
in.close();
const int lineTot=FinCurrentPopulation-DebutCurrentPopulation;
const int lseq=NumLoci+2;
字符序列[lineTot][lseq];
对于(int line=0;line
中的类型为ifstream,已在程序的早期成功打开。让我感到困惑的是,当我给in.getline()一个char[]时,代码会按预期工作。此外,gdb告诉我该故障是由if(in.good())引起的。有什么想法吗

谢谢


<>编辑:使LeNETO和LSEQ编译时间常数。

这是无效的C++。数组大小必须是C++中的编译时常量表达式。所以如果我用10000和10002的实际数字设置SEQ的大小,它应该工作吗?不,我没有说那些是你的代码唯一的问题。我刚才说你的代码甚至不是有效的C++,所以它“甚至不BGGY”。然后,停止使用<代码> in。良好的< /代码>,因为它已经通过了流的好点。但是你能告诉我为什么我在尝试访问seq元素时会遇到麻烦吗?我真的不知道我做错了什么。对不起,如果问题看起来很愚蠢,我还在学习C++。这不是有效的C++。数组大小必须是C++中的编译时常量表达式。所以如果我用10000和10002的实际数字设置SEQ的大小,它应该工作吗?不,我没有说那些是你的代码唯一的问题。我刚才说你的代码甚至不是有效的C++,所以它“甚至不BGGY”。然后,停止使用<代码> in。良好的< /代码>,因为它已经通过了流的好点。但是你能告诉我为什么我在尝试访问seq元素时会遇到麻烦吗?我真的不知道我做错了什么。对不起,如果这个问题看起来很愚蠢,我还在学习C++。