SlideShare a Scribd company logo
1 of 6
Download to read offline
Лекция №7 для дисциплин: «Прикладное программирование» и «Языки
программирования»
1
Лекция 7
2.3 Строковые переменные и константы
Стандартная библиотека языка С++ предоставляет программистам строковый тип данных
(избавляет от использования массивов символов char[ ]).
Мы будем использовать тип данных string наряду со стандартными встроенными типами
данных. И вы на первый взгляд не будете замечать никаких различий, хотя на самом деле это
абстрактный тип данных, созданный на основе объектно-ориентированных возможностей языка
С++. Надеюсь со временем вы тоже сможете создавать АТД, которыми можно будет
пользоваться так же удобно и свободно, как и классом string.
Строковый тип данных позволяет хранить строки переменной длины, причем длину можно
менять в процессе выполнения программы. Строковый тип представляет операторы,
выполняющие такие операции над строками, как конкатенация, присваивание, замещение и др.
Для того, чтобы можно было создавать строковую переменную, необходимо подключить
описание этого типа данных из стандартной библиотеки.
#include <iostream>
#include <string>
using namespaсe std;
void main()
{
string name="Vitaly"; // объявление, определение, инициализация
string lastname="Domnenko";
name+="M."+lastname; // конкатенация с присваиванием (накапливающее присваивание)
cout<<"My name is "<<name<<endl; // вывод
}
Используя [ ] можно получить символ из любой позиции
char ch=name[5]; // символы нумеруются с нуля
Лексикографическое сравнение осуществляется с использованием операторов == < <= > >=
!=. При лексикографическом сравнении последовательно сравниваются коды символов строки.
Те символы считаются "больше", чьи коды "больше"и наоборот.
Кодировка (кодовая таблица) - это однозначное соответствие между целым число (кодом) и
символом. При этом символ - это буква, цифра и другие графические знаки. Кодировки обычно
составляют так, что символы следуют в алфавитном порядке и символ 'а' имеет наименьший код,
а символ 'z' наибольший. Таким образом, выполняя лексикографическое сравнение можно
Лекция №7 для дисциплин: «Прикладное программирование» и «Языки
программирования»
2
разместить слова (строки) в алфавитном порядке. Это справедливо и для символов
кириллического алфавита. Но не всегда, т.к. существует кодировки, в которой кириллические
символы располагаются не в алфавитном порядке. Это кодировка КОИ8, которая обычно
используется в операционных системах UNIX. Если вы пишете программу для UNIX, то нужно
помнить, что простое лексикографическое сравнение не даст ожидаемого результата и нужно
усложнять программу.
В нашем случае (при программировании для DOS или Windows) используются кодировки
CP866 и СP1251 лексикографическое сравнение справедливо и дает нужный результат.
Ну и операторы для ввода/вывода строковых переменных >> << работают также как и для
переменных других типов.
Функция Описание
Конструкторы
string() конструктор по умолчанию, создает пустую строку
string(const char* p) преобразующий конструктор
string(const string& str, size t
pos=0, size t n=npos)
копирующий конструктор (npos обычно равен -1 и указывает, что
память не была выделена)
string(const char* p, size_t n) копирует n символов, р является базовым адресом
string(char c, size t n=l) создает строку из n символов с
Перегруженные операторы
string& operator= (const
string& s)
оператор присваивания
string& operator+= (const
string& s)
добавляет строку
char operator[] (size t pos)
const
возвращает символ из позиции pos
char& operator[] (size t pos) возвращает ссылку на символ из позиции pos
Функции-члены
string& append(const string& Добавляет n символов начиная от позиции pos
Лекция №7 для дисциплин: «Прикладное программирование» и «Языки
программирования»
3
s, size_t pos=0, size t n=npos);
string& assign(const string&
s, size_t pos=0, size_t
n=npos);
строковому объекту присваивается n символов, начиная от позиции
pos
string& insert(size_t posl,
const string& str, size_t
pos2=0 , size_t n=npos);
вставляет n символов, полученных из str, начиная с позиции pos2, в
строку с позиции posl
string& remove(size_t pos=0 ,
size_t n=npos);
Удаляются n символов из строки начиная с позиции pos
string& replace(posl, nl, str,
pos2=0, n2=npos);
в неявной строке начиная с позиции posl заменяет nl символов n2
символами из подстроки str с позиции pos2
string& replace(pos, n, p, n2); заменяет n символов в позиции pos используя char* p из n2
символов или char* p до завершающего нуля, или повторяя символ
с rep раз
char get_at (pos) const; возвращает символ из позиции pos
void put_at (pos, c); помещает символ с в позицию pos
size_t length() const; возвращает длину строки
const char* c_str() const; преобразует строку в традиционное char* представление
const char* data() const; возвращает базовый адрес строкового представления
void resize(n, c); void
resize(n);
изменяет строку, делая ее длину равной п; в первой функции в
качестве заполняющего символа выступает с, а во второй - символ
eos () (end-of-string, конец строки)
void reserve(size_t
res_arg);size_t reserve() const;
выделяет память под строку; первая функция переустанавливает
this; вторая возвращает закрытый член res - размер выделенного
фрагмента
size_t copy(p, n, pos=0) const; п симолов строки, начиная с позиции pos, копируются в char* p
string substr(pos=0, n=pos)
const;
возвращается подстрока из п символов строки
Лекция №7 для дисциплин: «Прикладное программирование» и «Языки
программирования»
4
int compare(const string& str,
size_t pos=0, size_t n=npos)
const;
сравнивает п символов строки, начиная с позиции pos, со строкой
str. Возвращается ноль, если строки равны; в противном случае
возвращается положительное или отрицательное целое значение,
показывающее, что неявная строка лексикографически больше или
меньше чем строка str.
size_t find (const string& str,
size_t pos=0) const;
в строке начиная с позиции pos производится поиск строки str.
Если она найдена, возвращается позиция, в которой она
начинается; в противном случае возвращается позиция npos
size_t rfind(str, pos=npos)
const;
похоже на find (), но при поиске первого совпадения строка
сканируется в обратном направлении
size_t find_first_of(str, pos=0)
const;
производится поиск первого вхождения str начиная с позиции pos
size_t find_last_of(str,
pos=npos) const;
аналогично, но в обратном направлении
size_t find_first_not_of(str,
pos=0) const;
производится поиск первого символа, который не соответствует ни
одному из символов str начиная с позиции pos
size_t find_last_not_of(str,
pos=npos) const;
аналогично, но в обратном направлении
2.4 Математические функции
#include <cmath>
using namespace std;
Функция Возвращаемое значения
double atof(const char* string) вещественное число, заданное массивом символов string
int atoi(const char* string) целое число, заданное массивом символов string
int abs(int n) абсолютное значение (модуль) целочисленного аргумента n
double acos(double x) арккосинус х в пределах -1.0 до 1.0
double asin(double x) арксинус х в пределах -1.0 до 1.0
Лекция №7 для дисциплин: «Прикладное программирование» и «Языки
программирования»
5
double atan(double x)
арктангенс х в пределах до
double atan2(double x, double y) арктангенс х/у в пределах до
double ceil(double x) наименьшее целое большее или равное х
double cos(double x) косинус х
double exp(double x)
double fabs(double x) абсолютное значение (модуль) вещественного числа х
double floor(double x) наибольшее целое большее или равное х
double fmod(double x, double y) остаток от деления х на у
double hypot(double x, double y) длина гипотенузы при заданных катетах х и у
double log(double x) натуральный логарифм х
double log10(double x) десятичный логарифм х
double pow(double x, double y) х в степени у
double sin(double x) синус х
double sqrt(double x)
double tan(double x) тангенс х
#include <cstdlib>
using namespace std;
Функция Возвращаемое значения
int rand() псевдослучайное число в диапазоне от 0 до RAND_MAX
void srand(unsigned int seed) устанавливает стартовую точку для генерации случайных чисел
#include <ctime>
using namespace std;
Лекция №7 для дисциплин: «Прикладное программирование» и «Языки
программирования»
6
Функция Возвращаемое значения
clock_t clock() процессорное время
double difftime(time_t timerl, time_t timer2) разность между двумя временными значениями
time_t time(time_t* timer) системное время

More Related Content

What's hot

Massivi 11(urok 1)
Massivi 11(urok 1)Massivi 11(urok 1)
Massivi 11(urok 1)toniberd
 
указатель на указатель 1
указатель на указатель 1указатель на указатель 1
указатель на указатель 1Aleksandr Pavlenko
 
практика 7
практика 7практика 7
практика 7student_kai
 
Презентация. Основы Pascal
Презентация. Основы PascalПрезентация. Основы Pascal
Презентация. Основы PascalEvgen67
 
паскаль язык структурного программирования
паскаль   язык структурного программированияпаскаль   язык структурного программирования
паскаль язык структурного программированияЕлена Ключева
 
Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Unguryan Vitaliy
 
Automated NP-completeness proof for 2D problems
Automated NP-completeness proof for 2D problemsAutomated NP-completeness proof for 2D problems
Automated NP-completeness proof for 2D problemsMikhail Dvorkin
 
язык работы с КМАС (Yafoll сообщение 1)
язык работы с КМАС (Yafoll сообщение 1)язык работы с КМАС (Yafoll сообщение 1)
язык работы с КМАС (Yafoll сообщение 1)Alex Shkotin
 
лабораторная работа №2
лабораторная работа №2лабораторная работа №2
лабораторная работа №2Zhanna Kazakova
 
03
0303
03JIuc
 
Java. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операцииJava. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операцииUnguryan Vitaliy
 
10кл общие сведения о языке программирования паскаль
10кл общие сведения о языке программирования паскаль10кл общие сведения о языке программирования паскаль
10кл общие сведения о языке программирования паскальAnna_Malina
 
Внешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlibВнешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlibAndrey Vlasovskikh
 
сбор урока
сбор урокасбор урока
сбор урокаLIANA180
 

What's hot (19)

Slides3
Slides3Slides3
Slides3
 
C language. Introduction
C language. IntroductionC language. Introduction
C language. Introduction
 
Massivi 11(urok 1)
Massivi 11(urok 1)Massivi 11(urok 1)
Massivi 11(urok 1)
 
указатель на указатель 1
указатель на указатель 1указатель на указатель 1
указатель на указатель 1
 
Dynamic memory
Dynamic memoryDynamic memory
Dynamic memory
 
практика 7
практика 7практика 7
практика 7
 
Презентация. Основы Pascal
Презентация. Основы PascalПрезентация. Основы Pascal
Презентация. Основы Pascal
 
паскаль язык структурного программирования
паскаль   язык структурного программированияпаскаль   язык структурного программирования
паскаль язык структурного программирования
 
Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.
 
Automated NP-completeness proof for 2D problems
Automated NP-completeness proof for 2D problemsAutomated NP-completeness proof for 2D problems
Automated NP-completeness proof for 2D problems
 
язык работы с КМАС (Yafoll сообщение 1)
язык работы с КМАС (Yafoll сообщение 1)язык работы с КМАС (Yafoll сообщение 1)
язык работы с КМАС (Yafoll сообщение 1)
 
лабораторная работа №2
лабораторная работа №2лабораторная работа №2
лабораторная работа №2
 
03
0303
03
 
Java. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операцииJava. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операции
 
10кл общие сведения о языке программирования паскаль
10кл общие сведения о языке программирования паскаль10кл общие сведения о языке программирования паскаль
10кл общие сведения о языке программирования паскаль
 
Тодуа. Методы разработки интерпретатора языка Рефал-2
Тодуа. Методы разработки интерпретатора языка Рефал-2Тодуа. Методы разработки интерпретатора языка Рефал-2
Тодуа. Методы разработки интерпретатора языка Рефал-2
 
8 3-1
8 3-18 3-1
8 3-1
 
Внешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlibВнешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlib
 
сбор урока
сбор урокасбор урока
сбор урока
 

Viewers also liked

TallyJS #1 - Intro to AngularJS
TallyJS #1 - Intro to AngularJSTallyJS #1 - Intro to AngularJS
TallyJS #1 - Intro to AngularJSAndrew Hart
 
Client Side MVC & Angular
Client Side MVC & AngularClient Side MVC & Angular
Client Side MVC & AngularAlexe Bogdan
 
Javascript Client & Server Architectures
Javascript Client & Server ArchitecturesJavascript Client & Server Architectures
Javascript Client & Server ArchitecturesPedro Melo Pereira
 
ORM을 활용할 경우의 설계, 개발 과정
ORM을 활용할 경우의 설계, 개발 과정ORM을 활용할 경우의 설계, 개발 과정
ORM을 활용할 경우의 설계, 개발 과정Javajigi Jaesung
 
JavaScript 프레임워크 살펴보기
JavaScript 프레임워크 살펴보기JavaScript 프레임워크 살펴보기
JavaScript 프레임워크 살펴보기항희 이
 

Viewers also liked (7)

TallyJS #1 - Intro to AngularJS
TallyJS #1 - Intro to AngularJSTallyJS #1 - Intro to AngularJS
TallyJS #1 - Intro to AngularJS
 
Client Side MVC & Angular
Client Side MVC & AngularClient Side MVC & Angular
Client Side MVC & Angular
 
Javascript Client & Server Architectures
Javascript Client & Server ArchitecturesJavascript Client & Server Architectures
Javascript Client & Server Architectures
 
Client side scripting
Client side scriptingClient side scripting
Client side scripting
 
Apresentação angular js
Apresentação angular jsApresentação angular js
Apresentação angular js
 
ORM을 활용할 경우의 설계, 개발 과정
ORM을 활용할 경우의 설계, 개발 과정ORM을 활용할 경우의 설계, 개발 과정
ORM을 활용할 경우의 설계, 개발 과정
 
JavaScript 프레임워크 살펴보기
JavaScript 프레임워크 살펴보기JavaScript 프레임워크 살펴보기
JavaScript 프레임워크 살펴보기
 

Similar to лек7

C++ Базовый. Занятие 12.
C++ Базовый. Занятие 12.C++ Базовый. Занятие 12.
C++ Базовый. Занятие 12.Igor Shkulipa
 
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.Unguryan Vitaliy
 
Программирование линейных алгоритмов
Программирование линейных алгоритмовПрограммирование линейных алгоритмов
Программирование линейных алгоритмовAndrey Dolinin
 
Cреда программирования
Cреда программированияCреда программирования
Cреда программированияirina8682
 
Правила статического анализа кода для диагностики потенциально опасных констр...
Правила статического анализа кода для диагностики потенциально опасных констр...Правила статического анализа кода для диагностики потенциально опасных констр...
Правила статического анализа кода для диагностики потенциально опасных констр...Sergey Vasilyev
 
массивы.строки
массивы.строкимассивы.строки
массивы.строкиdasha2012
 
Типы данных
Типы данныхТипы данных
Типы данныхOlgaDask
 
9. java lecture library
9. java lecture library9. java lecture library
9. java lecture libraryMERA_school
 
Язык программирования Паскаль
Язык программирования ПаскальЯзык программирования Паскаль
Язык программирования ПаскальOlgaDask
 
Cpp/cli particularities
Cpp/cli particularitiesCpp/cli particularities
Cpp/cli particularitiesmcroitor
 
модуль 03 строки
модуль 03 строкимодуль 03 строки
модуль 03 строкиYevgeniy Gertsen
 
Язык программирования Pascal
Язык программирования PascalЯзык программирования Pascal
Язык программирования PascalSchool 242
 
"Модифицируй это!" или "Больше магии Python с помощью изменения AST"
"Модифицируй это!" или "Больше магии Python с помощью изменения AST""Модифицируй это!" или "Больше магии Python с помощью изменения AST"
"Модифицируй это!" или "Больше магии Python с помощью изменения AST"PyNSK
 

Similar to лек7 (20)

C++ Базовый. Занятие 12.
C++ Базовый. Занятие 12.C++ Базовый. Занятие 12.
C++ Базовый. Занятие 12.
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
Programming c++ (begin-if-else)
Programming c++ (begin-if-else)Programming c++ (begin-if-else)
Programming c++ (begin-if-else)
 
Step cpp0201
Step cpp0201Step cpp0201
Step cpp0201
 
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.
 
8 3-3
8 3-38 3-3
8 3-3
 
Программирование линейных алгоритмов
Программирование линейных алгоритмовПрограммирование линейных алгоритмов
Программирование линейных алгоритмов
 
Cреда программирования
Cреда программированияCреда программирования
Cреда программирования
 
Правила статического анализа кода для диагностики потенциально опасных констр...
Правила статического анализа кода для диагностики потенциально опасных констр...Правила статического анализа кода для диагностики потенциально опасных констр...
Правила статического анализа кода для диагностики потенциально опасных констр...
 
лек13 4
лек13 4лек13 4
лек13 4
 
массивы.строки
массивы.строкимассивы.строки
массивы.строки
 
Типы данных
Типы данныхТипы данных
Типы данных
 
9. java lecture library
9. java lecture library9. java lecture library
9. java lecture library
 
PascalABC.NET 2015-2016
PascalABC.NET 2015-2016PascalABC.NET 2015-2016
PascalABC.NET 2015-2016
 
Язык программирования Паскаль
Язык программирования ПаскальЯзык программирования Паскаль
Язык программирования Паскаль
 
Cpp/cli particularities
Cpp/cli particularitiesCpp/cli particularities
Cpp/cli particularities
 
модуль 03 строки
модуль 03 строкимодуль 03 строки
модуль 03 строки
 
Язык программирования Pascal
Язык программирования PascalЯзык программирования Pascal
Язык программирования Pascal
 
"Модифицируй это!" или "Больше магии Python с помощью изменения AST"
"Модифицируй это!" или "Больше магии Python с помощью изменения AST""Модифицируй это!" или "Больше магии Python с помощью изменения AST"
"Модифицируй это!" или "Больше магии Python с помощью изменения AST"
 

More from Anastasia Snegina

птп по ппп 2013 2014
птп по ппп 2013 2014 птп по ппп 2013 2014
птп по ппп 2013 2014 Anastasia Snegina
 
прикл.прогр птп 13 14
прикл.прогр птп 13 14прикл.прогр птп 13 14
прикл.прогр птп 13 14Anastasia Snegina
 
2012 2013 пм спп провидошина
2012 2013  пм спп провидошина2012 2013  пм спп провидошина
2012 2013 пм спп провидошинаAnastasia Snegina
 
2012 2013 пм спп провидошина
2012 2013  пм спп провидошина2012 2013  пм спп провидошина
2012 2013 пм спп провидошинаAnastasia Snegina
 
рп по у пп практике в
рп по у пп практике врп по у пп практике в
рп по у пп практике вAnastasia Snegina
 
рп по пр практике в
рп по пр практике врп по пр практике в
рп по пр практике вAnastasia Snegina
 
рп по у сп практике в
рп по у сп практике врп по у сп практике в
рп по у сп практике вAnastasia Snegina
 
рп по у пп практике вт
рп по у пп практике втрп по у пп практике вт
рп по у пп практике втAnastasia Snegina
 
рп по пр практике вт
рп по пр практике втрп по пр практике вт
рп по пр практике втAnastasia Snegina
 
рп по у сп практике вт
рп по у сп практике втрп по у сп практике вт
рп по у сп практике втAnastasia Snegina
 
рп по у пп практике вт
рп по у пп практике втрп по у пп практике вт
рп по у пп практике втAnastasia Snegina
 
рп по пр практике вт
рп по пр практике втрп по пр практике вт
рп по пр практике втAnastasia Snegina
 
рп по у сп практике вт
рп по у сп практике втрп по у сп практике вт
рп по у сп практике втAnastasia Snegina
 

More from Anastasia Snegina (20)

птп по ппп 2013 2014
птп по ппп 2013 2014 птп по ппп 2013 2014
птп по ппп 2013 2014
 
прикл.прогр птп 13 14
прикл.прогр птп 13 14прикл.прогр птп 13 14
прикл.прогр птп 13 14
 
я.прогр птп
я.прогр птпя.прогр птп
я.прогр птп
 
пп кос вт
пп кос втпп кос вт
пп кос вт
 
пп кос в
пп кос впп кос в
пп кос в
 
пп кос в
пп кос впп кос в
пп кос в
 
2012 2013 пм спп провидошина
2012 2013  пм спп провидошина2012 2013  пм спп провидошина
2012 2013 пм спп провидошина
 
2012 2013 пм спп провидошина
2012 2013  пм спп провидошина2012 2013  пм спп провидошина
2012 2013 пм спп провидошина
 
пп кос вт
пп кос втпп кос вт
пп кос вт
 
рп по у пп практике в
рп по у пп практике врп по у пп практике в
рп по у пп практике в
 
рп по пр практике в
рп по пр практике врп по пр практике в
рп по пр практике в
 
рп по у сп практике в
рп по у сп практике врп по у сп практике в
рп по у сп практике в
 
рп по у пп практике вт
рп по у пп практике втрп по у пп практике вт
рп по у пп практике вт
 
рп по пр практике вт
рп по пр практике втрп по пр практике вт
рп по пр практике вт
 
рп по у сп практике вт
рп по у сп практике втрп по у сп практике вт
рп по у сп практике вт
 
рп по у пп практике вт
рп по у пп практике втрп по у пп практике вт
рп по у пп практике вт
 
рп по пр практике вт
рп по пр практике втрп по пр практике вт
рп по пр практике вт
 
рп по у сп практике вт
рп по у сп практике втрп по у сп практике вт
рп по у сп практике вт
 
лр18
лр18лр18
лр18
 
лр15
лр15лр15
лр15
 

лек7

  • 1. Лекция №7 для дисциплин: «Прикладное программирование» и «Языки программирования» 1 Лекция 7 2.3 Строковые переменные и константы Стандартная библиотека языка С++ предоставляет программистам строковый тип данных (избавляет от использования массивов символов char[ ]). Мы будем использовать тип данных string наряду со стандартными встроенными типами данных. И вы на первый взгляд не будете замечать никаких различий, хотя на самом деле это абстрактный тип данных, созданный на основе объектно-ориентированных возможностей языка С++. Надеюсь со временем вы тоже сможете создавать АТД, которыми можно будет пользоваться так же удобно и свободно, как и классом string. Строковый тип данных позволяет хранить строки переменной длины, причем длину можно менять в процессе выполнения программы. Строковый тип представляет операторы, выполняющие такие операции над строками, как конкатенация, присваивание, замещение и др. Для того, чтобы можно было создавать строковую переменную, необходимо подключить описание этого типа данных из стандартной библиотеки. #include <iostream> #include <string> using namespaсe std; void main() { string name="Vitaly"; // объявление, определение, инициализация string lastname="Domnenko"; name+="M."+lastname; // конкатенация с присваиванием (накапливающее присваивание) cout<<"My name is "<<name<<endl; // вывод } Используя [ ] можно получить символ из любой позиции char ch=name[5]; // символы нумеруются с нуля Лексикографическое сравнение осуществляется с использованием операторов == < <= > >= !=. При лексикографическом сравнении последовательно сравниваются коды символов строки. Те символы считаются "больше", чьи коды "больше"и наоборот. Кодировка (кодовая таблица) - это однозначное соответствие между целым число (кодом) и символом. При этом символ - это буква, цифра и другие графические знаки. Кодировки обычно составляют так, что символы следуют в алфавитном порядке и символ 'а' имеет наименьший код, а символ 'z' наибольший. Таким образом, выполняя лексикографическое сравнение можно
  • 2. Лекция №7 для дисциплин: «Прикладное программирование» и «Языки программирования» 2 разместить слова (строки) в алфавитном порядке. Это справедливо и для символов кириллического алфавита. Но не всегда, т.к. существует кодировки, в которой кириллические символы располагаются не в алфавитном порядке. Это кодировка КОИ8, которая обычно используется в операционных системах UNIX. Если вы пишете программу для UNIX, то нужно помнить, что простое лексикографическое сравнение не даст ожидаемого результата и нужно усложнять программу. В нашем случае (при программировании для DOS или Windows) используются кодировки CP866 и СP1251 лексикографическое сравнение справедливо и дает нужный результат. Ну и операторы для ввода/вывода строковых переменных >> << работают также как и для переменных других типов. Функция Описание Конструкторы string() конструктор по умолчанию, создает пустую строку string(const char* p) преобразующий конструктор string(const string& str, size t pos=0, size t n=npos) копирующий конструктор (npos обычно равен -1 и указывает, что память не была выделена) string(const char* p, size_t n) копирует n символов, р является базовым адресом string(char c, size t n=l) создает строку из n символов с Перегруженные операторы string& operator= (const string& s) оператор присваивания string& operator+= (const string& s) добавляет строку char operator[] (size t pos) const возвращает символ из позиции pos char& operator[] (size t pos) возвращает ссылку на символ из позиции pos Функции-члены string& append(const string& Добавляет n символов начиная от позиции pos
  • 3. Лекция №7 для дисциплин: «Прикладное программирование» и «Языки программирования» 3 s, size_t pos=0, size t n=npos); string& assign(const string& s, size_t pos=0, size_t n=npos); строковому объекту присваивается n символов, начиная от позиции pos string& insert(size_t posl, const string& str, size_t pos2=0 , size_t n=npos); вставляет n символов, полученных из str, начиная с позиции pos2, в строку с позиции posl string& remove(size_t pos=0 , size_t n=npos); Удаляются n символов из строки начиная с позиции pos string& replace(posl, nl, str, pos2=0, n2=npos); в неявной строке начиная с позиции posl заменяет nl символов n2 символами из подстроки str с позиции pos2 string& replace(pos, n, p, n2); заменяет n символов в позиции pos используя char* p из n2 символов или char* p до завершающего нуля, или повторяя символ с rep раз char get_at (pos) const; возвращает символ из позиции pos void put_at (pos, c); помещает символ с в позицию pos size_t length() const; возвращает длину строки const char* c_str() const; преобразует строку в традиционное char* представление const char* data() const; возвращает базовый адрес строкового представления void resize(n, c); void resize(n); изменяет строку, делая ее длину равной п; в первой функции в качестве заполняющего символа выступает с, а во второй - символ eos () (end-of-string, конец строки) void reserve(size_t res_arg);size_t reserve() const; выделяет память под строку; первая функция переустанавливает this; вторая возвращает закрытый член res - размер выделенного фрагмента size_t copy(p, n, pos=0) const; п симолов строки, начиная с позиции pos, копируются в char* p string substr(pos=0, n=pos) const; возвращается подстрока из п символов строки
  • 4. Лекция №7 для дисциплин: «Прикладное программирование» и «Языки программирования» 4 int compare(const string& str, size_t pos=0, size_t n=npos) const; сравнивает п символов строки, начиная с позиции pos, со строкой str. Возвращается ноль, если строки равны; в противном случае возвращается положительное или отрицательное целое значение, показывающее, что неявная строка лексикографически больше или меньше чем строка str. size_t find (const string& str, size_t pos=0) const; в строке начиная с позиции pos производится поиск строки str. Если она найдена, возвращается позиция, в которой она начинается; в противном случае возвращается позиция npos size_t rfind(str, pos=npos) const; похоже на find (), но при поиске первого совпадения строка сканируется в обратном направлении size_t find_first_of(str, pos=0) const; производится поиск первого вхождения str начиная с позиции pos size_t find_last_of(str, pos=npos) const; аналогично, но в обратном направлении size_t find_first_not_of(str, pos=0) const; производится поиск первого символа, который не соответствует ни одному из символов str начиная с позиции pos size_t find_last_not_of(str, pos=npos) const; аналогично, но в обратном направлении 2.4 Математические функции #include <cmath> using namespace std; Функция Возвращаемое значения double atof(const char* string) вещественное число, заданное массивом символов string int atoi(const char* string) целое число, заданное массивом символов string int abs(int n) абсолютное значение (модуль) целочисленного аргумента n double acos(double x) арккосинус х в пределах -1.0 до 1.0 double asin(double x) арксинус х в пределах -1.0 до 1.0
  • 5. Лекция №7 для дисциплин: «Прикладное программирование» и «Языки программирования» 5 double atan(double x) арктангенс х в пределах до double atan2(double x, double y) арктангенс х/у в пределах до double ceil(double x) наименьшее целое большее или равное х double cos(double x) косинус х double exp(double x) double fabs(double x) абсолютное значение (модуль) вещественного числа х double floor(double x) наибольшее целое большее или равное х double fmod(double x, double y) остаток от деления х на у double hypot(double x, double y) длина гипотенузы при заданных катетах х и у double log(double x) натуральный логарифм х double log10(double x) десятичный логарифм х double pow(double x, double y) х в степени у double sin(double x) синус х double sqrt(double x) double tan(double x) тангенс х #include <cstdlib> using namespace std; Функция Возвращаемое значения int rand() псевдослучайное число в диапазоне от 0 до RAND_MAX void srand(unsigned int seed) устанавливает стартовую точку для генерации случайных чисел #include <ctime> using namespace std;
  • 6. Лекция №7 для дисциплин: «Прикладное программирование» и «Языки программирования» 6 Функция Возвращаемое значения clock_t clock() процессорное время double difftime(time_t timerl, time_t timer2) разность между двумя временными значениями time_t time(time_t* timer) системное время