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

polevoy_cpp_2012_spring_lecture_07

.pdf
Скачиваний:
3
Добавлен:
20.04.2015
Размер:
136.27 Кб
Скачать

Объектно-ориентированное программирование

с использованием C++

Полевой Дмитрий Валерьевич к.т.н., доцент КиК

e-mail: oop.misis@gmail.com

Символ

графическое начертание

код (числовое значение при хранении в памяти)

символьный набор (кодовая таблица)

24.03.2012

cppNewb.ru

2

Си-строка

массив символов заканчивающийся нуль-терминатором

источник постоянных ошибок

24.03.2012

cppNewb.ru

3

Проблемы манипуляции с Си-строками

низкоуровневая работа с массивом

отслеживание конца строки

отслеживание размера буфера

большое число функций

24.03.2012

cppNewb.ru

4

Кодовые таблицы и юникод

char и wchar_t

национальные таблицы

CP866, Win1251 и т.д.

Unicode (переменный размер)

UTF8

Unicode (фиксированный размер)

UTF16, UTF32

24.03.2012

cppNewb.ru

5

Символ (стандартная библиотека)

• класс-свойств

template<class Ch> struct char_traits;

char_type – тип символов

pos_type – целый тип, определяющий позицию в потоке

24.03.2012

cppNewb.ru

6

Строковый класс (std::string)

стандартная библиотека

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

стандарт допускает реализацию с подсчетом ссылок

24.03.2012

cppNewb.ru

7

Шаблонное объявление

template < class Ch,

class Tr = char_traits<Ch>, class Al = allocator<Ch> >

class basic_string;

typedef basic_string<char> string;

24.03.2012

cppNewb.ru

8

Создание строки

• пустая строка

пример:

string str();

• инициализация строковым литералом

пример:

string str(“misis”);

• копирование существующей

пример:

string str(strOld);

24.03.2012

cppNewb.ru

9

Инициализация строки символом

• невозможна инициализация символом

пример:

//string(‘a’)

• возможна инициализация несколькими экземплярами символа

пример:

string(‘a’, cnt)

24.03.2012

cppNewb.ru

10