First: it appears you're writing the string and then the size. Write the size first, so you'll know how many characters to read in. Whenever you write something to be read later, think about how you'll need to read it back in, and what information you'll need to do that.
Now I'm saving and loading strings as:
1. I save a size of string
2. I save a stringBut isn't there a better way to do this?
I don't know what your fout function does, so I can't tell you if it stores the terminating null. What does that output look like in the file?
I forgot add this(it's simply std::ofstream call):
std::ofstream fout(Filename.c_str(), std::ios_base::binary);
fout.write(str.c_str(), str.size());