If I don't know the size a string will be, and if that size may change later, and if that string may contain '0' characters, what methods are there to do this? (I would prefer a professional/reliable method if possible)
There is no other way than dynamically to allocate memory for a new character array. Either you will do it yourself or you can use standard container std::string that will do this instead of you transparency for the source code.