string c ++:libc ++ abi.dylib:以std :: out_of_range类型的未捕获异常终止:basic_string

时间:2017-05-30 10:11:53

标签: c++ string

我正在读取文件。文件的第一行只是一个数字,第二行是由空格分隔的最多5个数字的序列。我在for循环中有一个if语句循环第二行的长度,但是我的if语句在行上出现了超出范围的错误。我很困难,我已经多次编辑无济于事,所以我把它留在了我开始的地方。

如果您需要更多代码,请与我们联系。

    //Reading from first line of file 
    prog1.seekg(0, prog1.beg);
    prog1 >>fteeth;
    prog1 >> fpattern;

    for(x=0; x < fteeth; x++){

        if ((fpattern.at(x) + 2 < 4) && (fpattern.at(x) + 2 > -1) && (fpattern.at(x) + 3 < 4) && (fpattern.at(x) -3 > -1)){

           farray[x] = 2;
            }
        else {
            farray[x] = 1;
        }
    }

    for(x=0; x < fteeth; x++){
        cout << farray[x] << endl;
    }

}

1 个答案:

答案 0 :(得分:0)

当索引超出范围时,at抛出异常。所以for循环中使用的x有问题。

prog1 >> fpattern;只会读取一个“单词”,其中“单词”表示由空格分隔的任何字符。如果您有五个这样的单词或数字,则必须阅读五次。