Добавил:
t.me Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2 семестр / Литература / Язык программирования С++. Краткий курс. Страуструп

.pdf
Скачиваний:
9
Добавлен:
16.07.2023
Размер:
31.34 Mб
Скачать

9.5.

Советы

173

аа as asd е

asdf asdf

g

Итератор

regex

_ i

tera

tor

является

двунаправленным

итератором,

так

что

мы

не

можем

непосредственно

итерировать

входной

поток

istream

(который

предоставляет

только

входной

итератор).

Мы

также

не

можем

за­

писывать

с

помощью

regex_iterator,

а

regex_iterator

по

умолчанию

(regex_iterator{})

является

единственно

возможным

концом

последова­

тельности.

9.5.

Советы

[1]

[2]

[3]

[4]

[5]

[6] [7]

[8]

[9] [10]

[11]

[12]

[13]

Используйте std:: string для владения последовательностями симво­

лов; §9.2; [CG:SL.str. I].

 

 

 

 

 

 

 

 

 

 

 

Предпочитайте операции над string функциям

для работы

со строка­

ми в стиле С; §9.1.

 

 

 

 

 

 

 

 

 

 

 

Используйте

string для объявления

переменных и

членов, но

не

базо­

вого класса;

§9.2.

 

 

 

 

 

 

 

 

 

 

 

 

Возвращайте string по значению

(положившись на

семантику

переме­

щения); §9.2, §9.2.1.

 

 

 

 

 

 

 

 

 

 

 

Непосредственно

или

 

косвенно

используйте

для

чтения

подстрок

substr () и

replace ()

для их записи; §9.2.

 

 

 

 

 

 

string при

необходимости

может

расти и сокращаться; §9.2.

 

 

 

При необходимости проверки выхода за границы диапазона

используй­

те at (),а не итераторы

или

индексы

[]; §9.2.

 

 

 

 

 

 

Используйте

итераторы

или

индексы

[] , а не аt

( ) , если хотите

опти­

мизировать скорость; §9.2.

 

 

 

 

 

 

 

 

 

Ввод в string не приводит

к переполнению; §9.2, §10.3.

 

 

 

 

Используйте

c_str ()

 

для

получения представления string

в

виде

строки в стиле С,

(только) когда она вам требуется; §9.2.

 

 

 

 

Используйте

stringstream или

обобщенную

функцию извлечения

значения (наподобие to<X>) для преобразования

строк в числа;

§10.8.

Класс basic_string

может быть

использован

для

создания строк

из

символов любого

типа;

§9.2.1.

 

 

 

 

 

 

 

 

Используйте

суффикс s

для

строковых литералов, которые должны

оз­

начать string стандартной

библиотеки; §9.3 [CG:SL.str.12].

 

 

 

 

10.3.

Ввод

void

g ()

 

 

{

 

 

 

 

int

х

(10};

 

cout

 

<< х;

177

Вывод

различных

типов

может

быть

скомбинирован

обычным

способом:

void

h (int

i)

{

 

 

 

 

cout

<<

"Значение

 

cout

<<

i;

 

cout

<<

'\n';

i

равно

";

При

вызове

h

(1

О)

мы

получим

следующий

вывод:

Значение

i

равно

10

де

Программисты быстро устают повторять имя выходного потока при выво­

нескольких связанных элементов. К счастью, для дальнейшего вывода мо­

жет

использоваться

сам

результат

вывода.

Например:

void

h2(int i)

{

 

 

cout <<"Значение

i

равно"<<

i

<< '\n';

Вывод функции h2 ( ) в точности такой же, как и функции h ( ) .

Символьная константа представляет собой символ, заключенный

в

одинар­

ные кавычки. Обратите внимание, что

символ

а не как числовое значение. Например:

 

выводится

именно

как

символ,

void

k ()

 

 

 

 

 

{

 

 

 

 

 

 

 

int

Ь

=

 

'Ь';

 

 

char

 

с

=

'с';

 

cout

 

<<

 

'а'

<<

11

Ь

Внимание: << с;

char

неявно

преобразуется

в

int

Целочисленное значение символа

'Ь'

пользуемой в реализации С++,

с

которой

чае мы получаем вывод а98с.

 

 

 

равно 98 (в кодировке ASCII, я работаю), поэтому в данном

ис­ слу­

10.3.

Ввод

В

заголовочном

токи

istream для

файле ввода

<istream> данных. Как

стандартная и ostream,

библиотека предлагает по­ istream работают с сим­

вольными строковыми представлениями встроенных типов

быть расширены для работы с пользовательскими типами.

и

могут

легко