Я нахожусь в процессе создания простой программы на C ++ (11).
Моя проблема заключается в том, что функция loadRoomsFile () читает текст из файла в массив указателей на символы и затем возвращаетit.
Я хочу преобразовать его в строку, поэтому я использовал строковый конструктор с параметром * char array.
Все тесты показывают, буфер также показывает правильные данные, но при вызове строки (loadRoomsFile ()) Я получаю исключение bad_alloc, и программа останавливается.Кто-нибудь может мне помочь?
char *loadRoomsFile() {
fstream roomsFile;
char *buffer;
// helper
int i = 0;
cout << "TEST 1" << endl;
roomsFile.open("rooms.txt");
cout << "TEST 2" << endl;
if(roomsFile.is_open()) {
cout << "TEST 3" << endl;
roomsFile.seekg(0, ios::end);
cout << "TEST 4" << endl;
buffer = new char[roomsFile.tellg()];
cout << "TEST 5" << endl;
roomsFile.seekg(0, ios::beg);
cout << "TEST 6" << endl;
while(!roomsFile.eof()) {
cout << "TEST WHILE" << endl;
buffer[i] = roomsFile.get();
i++;
}
cout << "TEST 7" << endl;
}
roomsFile.close();
cout << "TEST 8" << endl;
buffer[i] = '\0';
cout << "TEST 9" << endl;
cout << buffer << endl;
return buffer;
}
/*
* GENERAL FUNCTION
*/
int main() {
// Variables
int currentSection; // option choosed in Main Menu
int revert = true; // used for going back in time XD
//string roomsData; // used for storage of data from file
vector<Room> rooms;
cout << "----------------------------------------------------------------" << endl;
cout << "Conference Room Manager ver. 0.1" << endl;
cout << "Component 1/4, Bartosz Kubacki/Bartlomiej Urbanek" << endl;
cout << "----------------------------------------------------------------" << endl;
cout << endl;
// load all data from files
cout << "TEST MAIN" << endl;
string roomsData(loadRoomsFile());
return 0;
}
Спасибо!