Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: C++
Expertise: All
Dec 16, 1998



Building the Right Environment to Support AI, Machine Learning and Deep Learning

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.
Danny Kalev
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date