DataTree* DataTree::create(const std::string& fileName) { if (fileName.empty()) { return nullptr; } std::string fileData = std::string(); std::ifstream file(fileName); if (file.is_open()) { // Simply using while loop and getline to read file instead of using file size method because file size wasn't correct. std::string line; while (std::getline(file, line)) { fileData += (line + "\n"); } } if (fileData.empty() || fileData.size() <= 0) { //Data is empty or size is 0. return nullptr; } DataTree* data = new DataTree("ROOT_KEY", "ROOT_VALUE"); bool result = data->parse(fileData); if (result == false) { //Failed to parse delete data; return nullptr; } return data; }