The standard string class has a dual interface: it supports both C-style strings as well as string objects in various operations:
const char text[] = "hello world";string s = text; //initialization of string object with a C-style stringstring s2(s); //copy construction
This duality allows backward compatibility with legacy code. It should be noted, however, that for efficiency reasons, string member functions always assume that the const char * given as an argument is never NULL and that it points to a valid array of characters (meaning: it’s not a dangling pointer). Failing to supply a valid argument yields undefined behavior.