No, my userprofile does not contain non-ASCII characters.
Also, I receive the "Spielstand wurde gespeichert" notification, so it seems that everything runs through fine and no errors are returned from dr_rename.
That leaves me with one silly question:
std::string savename = filename;
savename[savename.length()-1] = '_';
I'm not sure about the intricacies of C++ (I only know PHP and Java and C# and JS), but in some languages the string only holds a reference to the array. If you modify the savename array in-place, you modify the value of the filename variable as well.
Then,
dr_rename( savename.c_str(), filename );
would just copy 0008d.sv_ to 0008d.sv_, not to 0008d.sve.
However, if that really was the case, I still wonder why I am the first to report.