0
int main(int argc, const char * argv[])
{
    ifstream input;
    input.open("test.txt");
    string arrAtoms[700];
    string temp;
    int i = 0;
    while(getline(input, temp)){
        if(startsWithAtom(temp)) {
            arrAtoms[i] = temp;
            i++;
        }
    }
    return 0;                
}

bool startsWithAtom(string test) {
    string atom = "ATOM";
    if(test.find(atom) == 0) {
        return true;
    }
    return false;
}

したがって、これは行を読み取り、「ATOM」で始まる場合に arrAtoms[] に格納するコードです。何らかの理由で、Thread1: EXC_BAD_ACCESS(code=EXC_1386_GPFLT) というエラーが表示され続けますが、その理由がわかりません。助けてください!

4

2 に答える 2

0

長さ 700で使用arrayしています。ファイルに「ATOM」で始まる行が 700 行を超える場合、メモリ割り当てエラーが発生します。これを行うより良い方法は、を使用するvectorことです。そのため、ファイルのサイズを気にする必要はありません。

#include <vector>
int main(int argc, const char * argv[])
{
    ifstream input;
    input.open("test.txt");
    std::vector <string> arrAtoms;
    string temp;
    while(getline(input, temp)){
    if(startsWithAtom(temp)) {
        arrAtoms.push_back(temp);
      }
    }
    return 0;                
}
于 2013-11-08T21:01:14.433 に答える