Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2011, 14:14   #1
PotatoCaptain
Пользователь
 
Регистрация: 05.12.2011
Сообщений: 40
По умолчанию Объясните функцию c_str

Здравствуйте, объясните пожалуйста доступным языком что делает функция c_str из класса string.
PotatoCaptain вне форума Ответить с цитированием
Старый 21.12.2011, 14:30   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от PotatoCaptain Посмотреть сообщение
Здравствуйте, объясните пожалуйста доступным языком что делает функция c_str из класса string.
Формирует массив строк в стиле си. И возвращает указатель на него.

Допустим, некоторая функция в качестве параметра принимает указатель на массив чаров:

void Foo(const char* content);

То есть, в неё можно передать строку только в виде c-ctyle указателя

А у тебя есть строка записанная в стринге:

std::string str="привет мир";

И тебе нужно передать эту строку в твою функцию:

Foo(str); //нельзя. функция не умеет работать со стрингами

но так как функция не умеет работать со стрингами, а только с указателями, то единственный способ сделать это - функция c_str()

Foo(str.c_str() ); //можно.

Функция c_str() присутствует только для совместимости с с-style кодом.
И в собственном c++ style коде, её лучше избегать настолько, насколько это возможно, дабы не плодить "суржик" (смесь двух стилей в одном исходном коде)
_Bers вне форума Ответить с цитированием
Старый 21.12.2011, 14:44   #3
PotatoCaptain
Пользователь
 
Регистрация: 05.12.2011
Сообщений: 40
По умолчанию

Спасибо, все стало понятно
PotatoCaptain вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
почему здесь выкидуется ошибка на счёт 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