c ++ Почему массив символов используется в руководствах по строкам? - PullRequest
2 голосов
/ 21 января 2012

Я видел учебники, которые используют массив символов для демонстрации чего-либо с помощью строкового объекта. Например, эти уроки:

http://www.cplusplus.com/reference/string/string/copy/

http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/

Я видел учебники, которые не используют массив символов для демонстрации чего-либо. В школе учитель также не использует никаких массивов. Для меня использование массива поначалу немного сбивает с толку, когда я читаю учебник (зная, что я все еще новичок в C ++).

Мне просто любопытно узнать, почему существуют учебники, которые используют массив символов, чтобы показать одну или несколько вещей, которые могут выполнять строковые объекты.

Ответы [ 4 ]

6 голосов
/ 21 января 2012

Хранение строк в массивах символов было оригинальным способом представления строки на языке Си.В Си строка является массивом типа char.Размер массива - это количество символов, + 1. +1 означает, что каждая строка в C должна заканчиваться символьным значением 0. Это терминатор NULL или просто терминатор.

Строки в стиле C допустимы в C ++, поскольку C ++ предназначен для обратной совместимости с C. Кроме того, многие библиотеки и существующие базы кода зависят от строки в стиле C.

Вот учебникна струнах в стиле Chttp://www.cprogramming.com/tutorial/c/lesson9.html

К вашему сведению: чтобы преобразовать строку C ++ в строку стиля C, вызовите метод c_str ().

2 голосов
/ 21 января 2012

В C и C ++ строки / были необычно представлены как '\0' завершенные массивы char.В C ++ вы можете использовать стандартный класс string, но это ни в коем случае не является «естественной» вещью при представлении строк.Многие программы на C и C ++ по-прежнему довольно довольны, используя массив char.

1 голос
/ 21 января 2012

См. Статью Бьярна Страуструпа "Изучение стандарта C ++ как нового языка" www2.research.att.com/~bs/new_learning.pdf

0 голосов
/ 21 января 2012

Строки появились, когда появился STL, когда стандарт C ++ был сформирован где-то в 1990-х, если я хорошо помню.До этого (например, Turbo C ++, который все еще используется в моей школе ... к сожалению), в C ++ не было объекта 'string', поэтому все использовали массивы char.Они по-прежнему широко используются, потому что в действительности строки не содержат много нового, чего не могут делать массивы символов, и многим они не нравятся.Строки на самом деле являются нулевыми массивами символов, но они скрывают это за классом.

Одна проблема со строками состоит в том, что не все библиотечные функции поддерживают их.Например, семейство функций printf, atoi (которое происходит от 'ascii to integer', также atof и все остальные), не поддерживает строки.Кроме того, в больших проектах иногда нужно работать в C, а строки в C не существуют, только массивы символов.

Хорошая особенность строк состоит в том, что они реализованы таким образом, чтоочень легко конвертировать из и в массивы char.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...