Я пытаюсь читать имена из файла, который мне дается. Количество имен, которые считываются, основано на пользовательском вводе. Это компилируется отлично, но когда я запускаю его, я получаю эту ошибку:динамическое распределение строковых массивов C++
«0xC0000005: место записи нарушения доступа 0xabababab».
Я провел некоторое исследование, и я думаю, что это, вероятно, потому, что я пишу над границами массива, но я не могу понять, почему это так.
Прежде, чем кто-нибудь спросит, мне сказали, что мне нужно использовать строку * для моего массива. Я не должен использовать векторы или массив символов. Спасибо.
int Capacity;
int numNames = 0; // wasn't in original question, but was in the code
cin >> Capacity;
string name;
string* arr = new string[Capacity];
while(!fs.eof() && numRead < Capacity)
{
getline(fs , names);
arr[numRead] = names; // error thrown here
arr++;
numRead++;
}
Вы делаете 'аранжировка ++' Может также просто изменить свой цикл, чтобы сделать: 'зЬй :: GetLine (фс, обр [numRead ++ ]); 'и избавиться от' имен' и всего остального. Не забудьте вызвать 'delete [] arr', когда закончите с ним. – Brandon
спасибо, что это был. –
также избавиться от '! Fs.eof()', это неправильная проверка. вместо этого завершите цикл, когда 'getline' терпит неудачу. –