0

このプログラムは厳密にアルファベットのみを読み取り、そのようにベクトルにプッシュ バックします。ただし、テキスト ファイルは他のテキスト ファイルと同じです。

この STD の不正な割り当て例外が発生しました。次のとおりです。

char keyArray[5][5];

keyArray[0][1] = 'a';
keyArray[0][2] = 'b';
keyArray[0][3] = 'c';
keyArray[0][4] = 'd';
keyArray[0][5] = 'e';
keyArray[1][1] = 'f';
keyArray[1][2] = 'g';
keyArray[1][3] = 'h';
keyArray[1][4] = 'i';
keyArray[1][5] = 'k';
keyArray[2][1] = 'l';
keyArray[2][2] = 'm';
keyArray[2][3] = 'n';
keyArray[2][4] = 'o';
keyArray[2][5] = 'p';
keyArray[3][1] = 'q';
keyArray[3][2] = 'r';
keyArray[3][3] = 's';
keyArray[3][4] = 't';
keyArray[3][5] = 'u';
keyArray[4][1] = 'v';
keyArray[4][2] = 'w';
keyArray[4][3] = 'x';
keyArray[4][4] = 'y';
keyArray[4][5] = 'z';


ifstream readFile;
vector<char> paddedVector;
char c;
int number_of_chars = 0;
readFile.open ("test.txt", ifstream::in);
while(  !readFile.eof() )
{
    if(readFile.peek() == -1)
        break;
    c = readFile.get();
    if(!isalpha(c))
        continue;

    if(c != '\n') //bad alloc here
    {
        ++number_of_chars;
        paddedVector.push_back(c); //std bad alloc happens here
    }
}

ご教授ください。

編集keyArray の部分を取り除くと、正常に動作します。なぜそうなのですか?ここで間違って何をしていますか?

4

3 に答える 3

1

内部配列のアドレス指定が間違っています。これらも 0 ベースであるため、形式は次のようにする必要があります。

keyArray[0][0] = 'a'
.
.
.
keyArray[4][4] = 'z'
于 2013-04-15T13:40:35.040 に答える