简体   繁体   中英

c++ pointer to array of strings

Have a look at this code: I am trying to read in a number of strings from the console and store them in a dynamic array.

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
}

When I execute this code, I get the following error:

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

Any help is greatly appreciated

你不初始化整数我

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

Wrong syntax.

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

What compiler are you using ? You should get a compilation error than a run-time error. Also did you write a copy constructor ? For more info see Rule of Three . To ease the job, use std::vector<std::string> .

In the for statement, for(int i;i++;i<numPatients)

i should be initialised to 0 and condition should be the second parameter Correct format should be -

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

cin is not good method to get the string input. cin reads only till it sees space character (space,newline,tab..) Alternatively use getline function -

syntax:

getline(cin,names[i])

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM