c ++ указатель на массив строк

Посмотрите на этот код: я пытаюсь прочитать несколько строк из консоли и сохранить их в динамическом массиве.

int Doctor::addPatients()
{
string* names = NULL;
int num;
cout << "how many patients are to be added? ";
cin >> num;
numPatients=num;
names = new string[numPatients];
for(int i=0;i++;i<numPatients){
cout << "enter the next patient's name: ";
cin.clear();
cin >> names[i];
}
patients = names; //patients is a private member variable of class Doctor
}

Когда я выполняю этот код, я получаю следующую ошибку:

malloc: *** error for object 0x10c100898: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6

Любая помощь с благодарностью

0

Решение

for(int i=0;i++;i<numPatients)  // Condition is the second expression in for syntax

Неверный синтаксис.

for(int i=0;i<numPatients; i++)

Какой компилятор вы используете? Вы должны получить ошибку компиляции, чем ошибку времени выполнения. Также вы написали конструктор копирования? Для получения дополнительной информации см. Правило трех. Чтобы облегчить работу, используйте std::vector<std::string>,

3

Другие решения

Вы не инициализируете целое число я

3

В заявлении, for(int i;i++;i<numPatients)

i должно быть установлено в 0, а условие должно быть вторым параметром
Правильный формат должен быть —

for(int i=0;i<numPatients;i++)

cin не очень хороший способ получить строку ввода. cin читает только до тех пор, пока не увидит пробел (пробел, символ новой строки, табуляция). Альтернативно используйте функцию getline —

синтаксис:

getline(cin,names[i])
1
По вопросам рекламы [email protected]