Conversion to a C-style string could have been provided by an operator const char *() rather than c_str(). This would have provided the convenience of an implicit conversion at the cost of surprises in cases in which such a conversion was unexpected.--The C++ Programming Language -- Special Edition Bjarne Stroustrup.
So there you have it! The Framers were trying to protect you from youself. Just like Java! Rejoice and be glad in their thoughtfulness!
(For what it's worth, I don't like it either!)
So here's a suggestion: With all the wry (or rye) sarcasm you can muster, helpfully point out to the class the thoughtful parochialism of the Framers, and then suggest the creation of a derived sString class, (for smart String) that defines an overload of operator const char *(), and strongly suggest (read: demand) that this derived class be used in all your assignments. It would extend your class's understanding, and would give some useful metrics on how often (or whether) such parochialism was a hindrance as opposed to a help. (I suspect I know what these metrics will show, but real-world numbers trump my suspicions any day of the week and twice on Sunday!)