Как преобразовать std :: string в const char * или char *?

Как я могу конвертировать std::string в char* или const char*?

вопрос задан 7.12.2008
user37875
5809 репутация

8 ответов


  • 31 рейтинг

    Используйте метод .c_str() для const char *.

    Вы можете использовать &mystring[0], чтобы получить указатель char *, но есть пара уловок: вы не обязательно получите строку с нулем в конце и вы не сможете изменить размер строки. Вы должны быть особенно осторожны, чтобы не добавлять символы после конца строки, иначе вы получите переполнение буфера (и возможное падение).

    Не было гарантии, что все символы будут частью одного и того же непрерывного буфера до C ++ 11, но на практике все известные реализации std::string работали таким образом; см. «& amp; s [0]» указывает на непрерывные символы в std :: string? .

    Обратите внимание, что многие функции-члены string перераспределяют внутренний буфер и делают недействительными любые указатели, которые вы могли сохранить. Лучше всего использовать их сразу, а затем выбросить.

    ответ дан Mark Ransom, с репутацией 217724, 7.12.2008