| 
| 
 | Вопрос # 5 506/ вопрос открыт / | 
 |  Приветствую, уважаемые эксперты!Возник вопрос по строкам. В с++ два типа строк - массив char и класс string. Какой и для каких целей лучше использовать?
 
|  |   Вопрос задал: Евгений Eklmn (статус: Посетитель)Вопрос отправлен: 16 июля 2011, 18:01
 Состояние вопроса: открыт, ответов: 2.
 |  Ответ #1. Отвечает эксперт: Gooddy Здравствуйте, Евгений Eklmn!Очень просто. Массив char не следует использовать, если конечно нет веских оснований.
 А класс string очень полезный и функциональный.
 
 Возможно конечно, что массив char выигрывает в скорости, но это далеко не факт.
 
|  | Ответ отправил: Gooddy (статус: 3-ий класс)Время отправки: 16 июля 2011, 19:35
 
 |  Ответ #2. Отвечает эксперт: Вадим К Здравствуйте, Евгений Eklmn!Если честно сказать, то в С++ нет строк. Массив сhar - это массив байтов, просто его интерпретируют как строку (так принято).
 Класс string - такого вообще нет. Есть std::string из стандартной библиотеки классов. Хотя библиотека std и является частью стандарта, но она не является неприемлемой частью с++. То есть, может быть компилятор под какую то экзотическую платформу, где не будет этого класса.
 
 В библиотеках, которые идут с Visual Studio есть класс CString, который подобен std::string по функционалу.
 
 Мой совет - изучать и использовать std::string, как класс, который решает большое кол-во задач, в стандартной библиотеке есть много функций и алгоритмов для решения типичных задач (сортировка, поиск). Параллельно разбираться с массивом символов и операциями над ними - от них никуда не деться. Как минимум нужно уметь правильно преобразовать в std::string.
 
 При правильной работе массив символов (char[]) будут самими эффективными, но кол-во кода для этого может быть очень большим. Малейший шаг в сторону и программа падает с треском. А класс std::string в большинстве случаев дает очень хороший и быстрый код без существенного углубления в детали.
 
 В целом, учить нужно оба способа представления строк, даже написать пару-тройку своих велосипедов, сравнить их по качеству и скорости с стандартными, может у Вас что то и получится интересное, но опыта наберетесь.
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 18 июля 2011, 21:19
 Оценка за ответ: 5
 |  
 Мини-форум вопросаВсего сообщений: 5; последнее сообщение — 18 июля 2011, 19:27; участников в обсуждении: 3. 
|   | Евгений Eklmn (статус: Посетитель), 17 июля 2011, 18:53 [#1]:А что, например, может считаться веским основанием? Генерация случайных чисел - слишком важный вопрос, чтобы оставлять его на волю случая. (Роберт Ковзю, Окриджская лаборатория) |  
|   | bugmenot (статус: 3-ий класс), 18 июля 2011, 10:02 [#2]:char[N] это тип из сей, не из плюсов Цитата (Gooddy): массив char выигрывает в скорости, но это далеко не фактЧепуха, большинство операций над asciiz медленнее. А еще присутствует узнаваемый расплывчатый стиль; не бери пример с этого чувака ;-) виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  
|   | Егор (статус: 10-ый класс), 18 июля 2011, 18:13 [#3]: Цитата (bugmenot): Чепуха, большинство операций над asciiz медленнее йинтересно. это какие же?
 Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.— Donald E. Knuth.
 |  
|   | Егор (статус: 10-ый класс), 18 июля 2011, 18:21 [#4]: Цитата (bugmenot): А еще присутствует узнаваемый расплывчатый стиль а это про что?
 Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.— Donald E. Knuth.
 |  
|   | bugmenot (статус: 3-ий класс), 18 июля 2011, 19:27 [#5]: Цитата (Егор): интересно. это какие же? Все, которые зависят от текущей длины asciiz и вычисляют её.
 
 Цитата (Егор): а это про что? Про уклончивые ответы. Имён не называю.
 виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |