Проблема области видимости массива строк C ++ - PullRequest
0 голосов
/ 13 марта 2011

В приведенном ниже коде cout выводит правильные строковые массивы. К сожалению, в других местах кода (все еще в той же функции и, следовательно, не является ошибкой области видимости) cout << rs[i], где 0<i<5 и i - это int, выводит пробел. Помощь будет оценена.

int N;
inp >> N;
string a[N]; //For matchee
string b[N]; //For matcher
string rs[N]; //For reflection
for(int i=0; i<N; i++) {
    inp >> a[i];
}
for(int i=0; i<N; i++) {
    inp >> b[i];
}
/*Build the reflection matrix*/
bool reflectCorrect = 1;
for(int i=0; i<N; i++) {
    for(int j=0; j<N; j++) {
        rs[i][j] = a[i][N-1-j];
        cout << rs[i][j];
        if(!(rs[i][j] == b[i][j])) {
            reflectCorrect=0;
        }
    }
    cout << "\n";
}

1 Ответ

1 голос
/ 13 марта 2011

Неверная строка rs[i][j] = a[i][N-1-j];. Потенциально выписывает границы выделенной строки. Кажется, что все хорошо, когда вы печатаете его сразу после записи, но позже другой код будет использовать пространство для других вещей. Поскольку вы пишете отдельные символы по порядку в строку, вы можете использовать push_back.

rs[i].push_back(a[i][N-1-j]);

Это должно выделить больше места для строки, как вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...