不能使用字符串变量通过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类的字段。

09-10 05:16