devxlogo

Why Class String Doesn’t Have an Implicit Conversion to char *

Why Class String Doesn’t Have an Implicit Conversion to char *

The standard class string (unlike MFC CString for example) doesn’t have a char * conversion operator for two reasons. First, implicit conversions can cause undesirable surprises when you least expect them. Legacy C code is combined with new C++ code in many systems. In its pre-standardized form, C used char * as generic pointers (void* was added much later). You can imagine what chaos an implicit conversion to char* can inflict in such systems. The other reason is that C strings are null terminated, whereas the underlying representation of a string object is implementation-dependent. An implicit conversion of a string object in a context requiring a null-terminated array of characters can be disastrous. For these reasons, the C++ standardization committee did not include a conversion operator in class string. When you need to do such a conversion, you can call string::c_str() explicitly.

See also  Professionalism Starts in Your Inbox: Keys to Presenting Your Best Self in Email
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist