- •Подготовка программы к исполнению
- •Директива препроцессора #include
- •Математические функции из библиотеки cmath
- •Заголовок функции main
- •Объявление переменных.
- •Объявление переменных простого типа
- •Объявление констант простого типа
- •Перечисляемые переменные.
- •Логические операции
- •Операторы
- •Операторы сложные
- •Составной оператор
- •Структурированные операторы
- •Условный оператор.
- •Блок-схема оператора разветвления
- •Условная операция.
- •Операция «запятая» в операторе if.
- •Преобразование и привидение типов.
- •Оператор выбора варианта.
- •Блок-схема оператора варианта
- •Цикл по счётчику
- •Цикл c предусловием.
- •Цикл c постусловием.
- •Операторы передачи управления
- •1) Спецификации формата, которые определяются символом % - для выделения, контроля и преобразования соответствующих им введенных значений;
- •2) Любые символы, которые могут быть во входном потоке и которые надо игнорировать:
- •2) Первого символа, который не соответствует формату (например, буква или пробел после выделения числа); .
- •3) Заданной длины поля вводимого значения, если она определена в формате.
- •4.2.2. Форматы вывода данных
- •1) Спецификации формата, которые определяются символом % - для вывода .Значений, определенных списком аргументов, если они есть;
- •2) Любые символы, которые должны быть выведены в выходной поток;
- •2 Позиции отводятся для знака числа и точки.
- •Составные типы данных
- •Обработка двумерного массива
- •Указатели
- •Порядок выполнения операций над указателями
- •Арифметические операции над адресами
- •Операторы распределения памяти new и delete
- •Указатели и динамические массивы
- •Указатели и спецификатор const
- •Массивы указателей
- •Организация динамического двумерного массива
- •Функции работы со строками
- •Действия, производимые над строками и их правила Присвоение
- •Конкатенация строк
- •Копирование строк
- •Определяет длину строки
- •Указатели и строки
- •Введение в класс string
- •Структуры
- •Ссылочные переменные
- •Функции
- •Функции, имеющие возвращаемый параметр с помощью оператора return.
- •Объявление формальных параметров
- •Ввод - вывод записей
- •Дополнительные возможности работы с файлами
- •Работы с файлами и стандартный класс mfc cFileDialog.
- •Работа с файлами с помощью mfc( классы cFile, cStdioFile, ... ) и стандартный класс mfc cFileDialog.
- •Класс cFile
- •Класс cMemFile
- •Класс cStdioFile
- •Примеры записи и чтения из файла
Функции работы со строками
Функции для обработки срок работают, проходя по строке символ за символом до тех пор, пока не встретится нулевой символ.
Вывод строки символов:
cout <<SM2<<SM3<<SM4;//выведет каждый раз FILES, т.к. встретит нулевой символ и на этом остановится. Вывод работает как со скалярной переменной.
cout <<SM1; //будет выводить бесконечно, т.к. будет двигаться по памяти, выводя байт за байтом, интерпретируя каждый из них как символ, подлежащий печати, пока не встретит нулевой символ.
Ввод строки символов:
Класс istream включает функцию-член get(), которая читает ввод до конца строки, заменяет его нулевым символом при сохранении строки, но вместо того, чтобы прочитать и отбросить символ перевода строки на новую, get() оставляет его во входной очереди. Предположим это и используем два вызова get():
#include <iostream>
using namespace std ;
int main ( )
{
char SM2 [100 ],SM3[100];
cin.get(SM2,100);
cin.get(SM3,100);
return 0 ;
}
Поскольку код клавиши ENTER (#13) состоит из двух частей:
1: - признак конца строки;
2: - перевод на новую строку;
первый вызов оставляет символ перевода на новую строку во входной очереди. Символ новой строки оказывается первым символом, который видит следующий вызов. Т.о. второй вызов get() читает символ новой строки и завершает чтение, не прочтя необходимое. На помощь приходит вызов cin.get() без аргументов читает единственный следующий символ, даже если он будет символ новой строки, т.е. следующая последовательность будет работать правильно.
char SM2 [100 ],SM3[100];
cin.get(SM2,100); //читает првую строку
cin.get(); //читает символ перевода строки
cin.get(SM3,100); //читает вторую строку
Другой способ применения состоит в канкатинации двух вызовов функций-членов класса, как показано в следующем примере:
Пример ввода-вывода строк
#include <iostream>
using namespace std ;
int main ( )
{
// объявление и инициализация строки
char SM [ ] = "FILES" ;
cout<<SM<<"\n";
char SM2 [100 ],SM3[100];
cin.get(SM2,100).get();//ввод строки
cout<<SM2<<'\n';
cin.get(SM3,100).get();//ввод строки
cout<<SM3<<'\n';
strcat(SM2,SM3);
printf("\nVVV = %s",SM2);
return 0 ;
}
Действия, производимые над строками и их правила Присвоение
Механизм строковых назначений имеет некоторые особенности, обусловленные соответствием длин строк получателя и источника:
- если длина получателя равна длине источника, то значение источника целиком помещается в получателя;
- если максимальная длина получателя превышает текущую длину источника, все содержимое источник попадает в получатель и ткущая длина получателя становится равной текущей длине источника;
- если максимальная длина получателя меньше текущей длины источника, значением получателя становятся первые литеры источника, которые поместились в получатель. текущая длина получателя равна максимальной длине получателя.
Конкатенация строк
Формат:
char *strcat(char* ST1, const char* ST2);
Объединение строки ST1 и ST2 ,результат записывается в строку ST1.
При конкатенации надо побеспокоится, чтбы приемник принял сумму длин текущих источников.