Вы не можете получить char*
от string
string
не разрешает вам свободный доступ к своему внутреннему буферу.
Самое близкое, что вы можете получить, это const char*
с использованием .c_str()
, если вы хотите, чтобы оно завершалось нулем, или .data()
, если оно не должно быть завершено нулем.
Затем вы можете привести указатель, возвращаемый этими функциями, к char*
, но вы делаете это на свой страх и риск. Тем не менее, это относительно безопасное приведение, если вы уверены, что не меняете строку. Если вы изменили его, указатель, полученный из c_str()
, может быть недействительным.
Этот код:
string str("Hello World!");
char* sp = (char*)str.c_str();
sp[5] = 'K';
, вероятно, в порядке
Однако это:
string str("Hello World!");
char* sp = (char*)str.c_str();
str = "Chaged string";
sp[5] = 'K';
определенно не в порядке.