Есть строки в C ++? - PullRequest
       26

Есть строки в C ++?

3 голосов
/ 29 января 2009

Я изучал C ++ с некоторыми школьными книгами 80-х годов, и я не совсем уверен, являются ли они строками в C ++ или просто очень длинными массивами типа char. Кто-нибудь может помочь?

Ответы [ 5 ]

17 голосов
/ 29 января 2009

Существует класс string в C ++.

11 голосов
/ 29 января 2009

Проверьте стандартную библиотеку.

В STL вы можете найти класс std :: string, а также несколько других полезных классов.

Основную документацию можно найти здесь:

http://www.sgi.com/tech/stl/

Строковую документацию можно найти здесь:

http://www.sgi.com/tech/stl/basic_string.html

Красота этих строк в том, что они удаляют себя; поэтому, как только вы объявите их, вы можете просто отпустить их, и они будут обращаться с собственной памятью. Это верно и для других классов stl (Конечно, если вы объявите вектор указателей, вектор будет удален, но память, на которую указывают указатели, также должна быть обработана; это не полная панацея, но она работает хорошо если учесть это ограничение).

Наконец, я обнаружил, что эта книга - действительно хороший способ научиться думать в STL:

Действующий STL

6 голосов
/ 29 января 2009

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

Вы действительно должны получить более новую книгу!

2 голосов
/ 29 января 2009

C ++ имеет std :: string, как указывает @mmr.

Кроме того, почти каждая библиотека классов / фреймворк / инструментарий предлагает (по крайней мере) один его собственного.

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

Все это необходимо, потому что ни один размер не подходит всем. Некоторые хотят ленивого копирования данных, некоторые хотят быструю вставку в середину и т. д., некоторые хотят UTF-8 и т. д.

По всей вероятности, если ваш проект выполняет какие-либо серьезные манипуляции со строками, вы в конечном итоге написать свой собственный.

0 голосов
/ 29 января 2009

в С ++; массив символов с нулевым символом в конце является строкой.

Сказав, что, как отмечали многие другие, в различных библиотеках также есть строковый класс для обработки общих функций манипуляции со строками.

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