不能使用字符串变量通过SDL_RWwrite / SDL_RWread保存/加载为文件。
// Save data
SDL_RWops* storeDataFile = SDL_RWFromFile("data.bin", "w+b");
if(storeDataFile != NULL) {
string sStoreString = "Hello World";
SDL_RWwrite(storeDataFile, &sStoreString, sStoreString.size(), 1);
SDL_RWclose(storeDataFile);
}
// Load data
SDL_RWops* storeDataFile = SDL_RWFromFile("data.bin", "r+b");
if(storeDataFile != NULL) {
string sStoreString;
SDL_RWread(storeDataFile, &sStoreString, storeDataFile->size(storeDataFile), 1);
SDL_RWclose(storeDataFile);
cout << sStoreString << endl;
}
最后的提示行将给出分段错误错误。
如果将字符串替换为int,则可以正常工作。
最佳答案
您需要sStoreString.c_str()
而不是&sStoreString
。
否则,您访问的不是字符串内容,而是std::string
类的字段。