std::string to char*
Я хочу перетворити std::string в **char* або char[]** тип даних.
std::string str = "string";
char* chr = str;
Наслідки: "error: cannot convert 'std::string' to 'char' ... ".
Якими методами це можна зробити?
303
3
Автоматично він не перетвориться (слава Богу). Вам доведеться використовувати метод
c_str()
, щоб отримати версію рядка на мові C.Зверніть увагу, що він повертає
const char *
; вам не дозволяється змінювати рядок у стилі C, який повертаєc_str()
. Якщо ви хочете обробити його, вам доведеться спочатку скопіювати його:Або у сучасній C++:
Якщо вам потрібен просто рядок у стилі C, що представляє той самий вміст:
Якщо потрібно отримати рядок у стилі C з новим вмістом, то одним із способів (враховуючи, що розмір рядка невідомий під час компіляції) є динамічне виділення:
Не забудьте потім його видалити.
Якщо вам потрібен статично виділений масив обмеженої довжини:
std::string
неявно не перетворюється до цих типів з тієї простої причини, що потреба в цьому, як правило, є запахом дизайну. Переконайтесь, що вам це дійсно потрібно.Якщо вам визначено потрібен
символ*
, то це, мабуть, найкращий спосіб:Припустимо, що вам просто потрібно передати рядок у стилі C на вхід: