Страница 1 из 1

Что лучше: string или C-string?

Добавлено: 18 янв 2010, 11:52
Dragon
Не знал где создать (т.к. тема более дискусионная), посему зарание приношу извинения если что не так.

Изучил я С-строки и класс string. У первых есть весь набор функций для сравнения, конкатенации строк, подсчета кол-ва символов. Вторые же удобнее в том же сравнении т.к. строки не представляют собой массив и не надо постоянно следить, вышли ли мы за его пределы или нет. Но в литературе постоянно вижу подобные фразы:
После появления класса string некоторые программисты считают, что следует использовать только его. Однако на самом деле обойтись без С-строк в программах на С++ непросто.
А как считаете вы? Почему?

Re: Что лучше: string или C-string?

Добавлено: 18 янв 2010, 12:34
Decoder
Если ты имеешь в виду класс string из библиотеки STL, то в его основе лежит всё тот же массив символов, а в методах класса использованы всё те же функции языка Си для работы со строками.
Есть ряд полезных функций языка Си, которые не используются в методах класса string. Например: функции sprintf() и sscanf() для формирования строки из данных и получения данных из строки. Есть ещё ряд специфических функций для преобразования числа в строку и строки в число, а так же преобразования строки из одной кодировки в другую.

Re: Что лучше: string или C-string?

Добавлено: 18 янв 2010, 13:07
Dragon
С библиотекой STL я пока еще не знаком. Собственно я говорю о классе string, который подключается директивой #include <string>.

Про преобразование строки в число в С-строках забыл. Очень важная функция.

Re: Что лучше: string или C-string?

Добавлено: 18 янв 2010, 14:17
BulldozerBSG
Что значит "Что лучше..."? А где же критерии сравнения? А то получаеться что вопрос из раздела "А что тяжелее? Железный или зеленый?" :)

Re: Что лучше: string или C-string?

Добавлено: 18 янв 2010, 14:26
Dragon
Хм. Ну хотя бы по стандартным функциям работы со строками.
Сравнение, конкатенация, поиск, приведение типов (atoi, atof, atol в С-строках).

Что предпочтительнее использовать (что чаще используют в С++)? Как-то так.

Re: Что лучше: string или C-string?

Добавлено: 18 янв 2010, 16:49
BulldozerBSG
Какждый использует то что ему удобней, а точнее то что он лучше знает.

Но есть существенные различия в использовании.
При использовании C-строк необшодимо самому следить за выдиление памяти необходимого размера а также последующей её освобождением. В случае с std::string (подключаеться с заголовочным файлом <string> и входит в STL) строковый контейнер всей работой с паматью по выдилению и освобождению занимаеться сам.

Лексографическое сравнение строк:
С- строки: используют функцию strcmp
std::string: используют операторы ==, !=, <, >

Конкатенация строк:
С- строки: используют функцию strcat
std::string: используют операторы +, +=

Поиск подстроки:
С- строки: используют функцию strstr
std::string: используют метод find

ну и все в таком духе...

Приведенеие типов не совсем верено, лучше назвать это конвертирование
И тут для std:string необходимо использовать строковые потоки как связующее звено.

Краткий справочник по std::string http://www.cplusplus.com/reference/string/string/