есть ли способ переписать только первые 30 символов текстового файла, используя std :: ofstream, не очищая все содержимое текстового файла? Я посмотрел в Интернете, но это не помогло. Один парень предложил переписать весь файл, но это очень неэффективно (есть еще +900 * 30 других персонажей). Кто угодно? О, и вот мой код:
void Unlock(int Level)
{
ifstream CheckIfExists("levels.txt");
if (!CheckIfExists.good())
{
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "ERROR",
"Unable to open the levels file. Next level won't be unlocked!", window);
CheckIfExists.close();
return;
}
CheckIfExists.close();
if(Level >= 0 && Level <= 29)
{
ofstream New_Locks("levels.txt");
Locked[Level] = UNLOCKED;
for(int i = 0; i < 30; ++i) New_Locks << Locked[i];
New_Locks.close();
return;
}
else SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_INFORMATION, "Congratulations!",
"You won! Thank you for playing! Maybe once more?", window);
return;
}
использовать fstream
вместо ofstream
ifstream
предназначен только для чтения, ofstream
для записи только, fstream
делает оба.
Также обратите внимание: нет необходимости явно закрывать файлы. Деструктор fstream закроет их должным образом.