C++: я должен использовать строки или массивы символов в целом?

Я немного нечеток на основных путях, которыми программисты кодируют по-другому в C и C++. Одной вещью в особенности является использование строк в C++ по массивам символов, или наоборот. Так, я должен использовать строки или массивы символов, в целом, и почему?

15
задан BradleyDotNET 16 September 2014 в 22:59
поделиться

6 ответов

В C ++ почти во всех случаях следует использовать std :: string вместо необработанного массива символов.

std :: string управляет базовой памятью за вас, что само по себе является достаточной причиной для ее предпочтения.

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

27
ответ дан 1 December 2019 в 00:49
поделиться

Другие поставили это. По возможности используйте std :: string. Однако есть области, где вам нужен char *, например, если вы хотите вызвать некоторые системные службы.

1
ответ дан 1 December 2019 в 00:49
поделиться

Если вы изменяете или возвращаете строку, используйте std :: string . Если нет, примите ваш параметр как const char * , если вам не нужны функции-члены std :: string . Это позволяет использовать вашу функцию не только с std :: string :: c_str () , но и с строковыми литералами. Зачем заставлять вызывающего абонента платить за создание std :: string с кучным хранилищем только для передачи литерала?

12
ответ дан 1 December 2019 в 00:49
поделиться

Используйте std :: string . У вас будет меньше проблем (я думаю, почти ничего, по крайней мере, мне не приходит в голову) с размерами буфера.

1
ответ дан 1 December 2019 в 00:49
поделиться

В C есть char [], а в C ++ тоже есть std :: string ...

Я часто слышу, что нужно «принять язык» и, следуя этому правилу, вы должны использовать std :: string ...

Однако это в значительной степени зависит от того, какую библиотеку вы используете, как эта библиотека хочет, чтобы вы выражали свои строки и тому подобное.

std :: string - это класс контейнера, а внутри него - char []
Если вы используете std :: string, у вас есть много преимуществ, например, функции, которые помогут вам [ сравните, подстановку, как примеры]

1
ответ дан 1 December 2019 в 00:49
поделиться

Как и в случае со всем, что вы выбираете, зависит от того, что вы делаете с этим. std :: string имеет реальное значение, если вы имеете дело с изменяющимися строковыми данными. Вы не можете превзойти char [] по эффективности при работе с неизменяемыми строками.

0
ответ дан 1 December 2019 в 00:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: