字符串C :libc abi.dylib:终止未被发现的类型std :: out_of_range:basic

string c++ : libc++abi.dylib: terminating with uncaught exception of type std::out_of_range: basic_string

本文关键字:out std 类型 of basic range 被发现 libc abi dylib 终止      更新时间:2023-10-16

我正在从文件中阅读。该文件的第一行只是一个数字,第二行是由空格隔开的最多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;
    }
}

当索引超出范围时, at抛出了异常。因此,在循环中使用的x有问题。

prog1 >> fpattern;只会读一个"单词",其中" word"是指任何被空格隔开的字符。如果您有五个这样的单词或数字,则必须阅读五次。