Назначение C=R.c_str();
в коде ниже причины G ++, чтобы бросить следующее сообщение об ошибке:ошибка: неправильное преобразование из «сопзЬ символ *» в «символ *» [-fpermissive]
error: invalid conversion from 'const char*' to 'char*' [-fpermissive]"
#include <iostream>
#include <string>
using namespace std;
int main()
{
string R = "killme";
char *C = new char[100];
C=R.c_str();
cout<<*C;
}
Почему это ошибка и как я могу ее решить?
Почему бы не просто бросить? , например. char * c = (char *) myStdStr.c_str(); – hfrmobile
@hfrmobile Это будет отлично работать для примера OP, если вы добавите 'const'. Тем не менее, это не сработало бы вообще, потому что у вас нет контроля над тем, что возвращает 'c_str()': как только вы изменяете строку, или строка выходит за пределы области, указатель, который вы вернули из 'c_str() 'становится недействительным. Вот почему создание копии обеспечивает более безопасную альтернативу. – dasblinkenlight