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

polevoy_cpp_2012_spring_lecture_07

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

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

с использованием 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