![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 05.12.2011
Сообщений: 40
|
![]()
Здравствуйте, объясните пожалуйста доступным языком что делает функция c_str из класса string.
|
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]() Цитата:
Допустим, некоторая функция в качестве параметра принимает указатель на массив чаров: void Foo(const char* content); То есть, в неё можно передать строку только в виде c-ctyle указателя А у тебя есть строка записанная в стринге: std::string str="привет мир"; И тебе нужно передать эту строку в твою функцию: Foo(str); //нельзя. функция не умеет работать со стрингами но так как функция не умеет работать со стрингами, а только с указателями, то единственный способ сделать это - функция c_str() Foo(str.c_str() ); //можно. Функция c_str() присутствует только для совместимости с с-style кодом. И в собственном c++ style коде, её лучше избегать настолько, насколько это возможно, дабы не плодить "суржик" (смесь двух стилей в одном исходном коде) |
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 05.12.2011
Сообщений: 40
|
![]()
Спасибо, все стало понятно
|
![]() |
![]() |
![]() |
#4 |
фрилансер, препод.
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,035
|
![]()
сорри за некропост. Сюда попал по ссылке из другой темы, не смог пройти мимо)
написана ерунда. Эта функция возвращает константный указатель на первый элемент внутреннего массива класса std:: string это, соответственно, тоже ерунда. data() - возвращает указатель с константностью в зависимости от константности объекта c_str() - всегда возвращает константный указатель |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,821
|
![]()
Нет, из первого вашего утверждения это не следует. Тем более это ваше утверждение ерунда.
И? Как это подтверждает ваш тезис? cbegin тоже всегда возвращает константный итереатор и итераторы это более С++ стиль. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
почему здесь выкидуется ошибка на счёт c_str и ToInt на счёт ostream | elf01 | C++ Builder | 5 | 19.12.2011 23:07 |
почему здесь выкидуется ошибка на счёт c_str | elf01 | C++ Builder | 1 | 16.12.2011 15:27 |
Описать функцию нахождения расстояния между 2-мя точками на плоскости, заданными своими координатами, и функцию .... | zzz6 | Помощь студентам | 2 | 06.07.2011 08:24 |
Как передать указатель на функцию в функцию | WIN32APIist | Общие вопросы C/C++ | 1 | 27.01.2011 10:35 |
Объясните!!! | Tyfun | Помощь студентам | 3 | 08.09.2010 22:16 |