Пример инициализации массива
string students[10] = {
"Иванов", "Петров", "Сидоров",
"Ахмедов", "Ерошкин", "Выхин",
"Андеев", "Вин Дизель", "Картошкин", "Чубайс"
};
Заметьте, что нумерация элементов массива в C++ начинается с нуля. Следовательно, фамилия первого студента находится в students[0], а фамилия последнего — в students[9].
В квадратных скобках указывается число элементов в массиве.
Интерес должен представлять не сам массив как таковой, а то, что он содержит. Почти вся обработка массивов заключается в обработке его элементов. Для прохода по массивам используют циклы. В С++ у массива отсчет всегда идет от нуля, поэтому первый элемент массива имеет индекс ноль. Из-за этого новичкам, привыкшим к нашему обычному счету с раз, два, три, бывает не очень удобно и понятно то, что при обработке массива от последнего его элемента отнимается единичка (если массив в N элементов, то при обработке последний будет N-1, а первый будет нулевой элемент массива). Хотя некоторые программисты могут подстраивать отсчет под себя. (выделив 1 лишний элемент, можно использовать отсчет о единицы или как-то еще). Но это все обобщенная информация, которую имеет смысл прочитать.
При работе с массивами нужно знать как с ними работать. Чтобы с ними работать начнем с простого присвоения первому элементу массива какого-то своего значения. (помните, я писал, что в массиве обработка чаще с элементами, вот и присваиваем значение в элемент из массива). Будем считать, что ни мы, ни до нас в коде никто не мудрил и отсчет элементов в массиве начинается с нуля. Для создания массива компилятору необходимо знать тип данных и количество элементов в массиве
· Массивы могут иметь те же типы данных, что и простые переменные
· Квадратные скобки это своеобразный индикатор того, что происходит работа с массивом
· При объявлении массива, внутри квадратных скобок указывается число элементов для массива
· При использовании массива, внутри квадратных скобок указывается номер элемента из массива
· Номер элемента массива называется индексом массива
· Внешние и статические массивы можно инициализировать
· Автоматические и регистровые массивы инициализировать нельзя
· Любой Массив требует такой же инициализации как и переменные, иначе в него может попасть информационный мусор
Символы, строки (инициализация, алгоритмы).
Символьный тип char
Любой текст состоит из символов. Для хранения одного символа предназначен тип данных char. Переменную типа char можно рассматривать двояко: как целое число, занимающее 1 байт и способное принимать значения от 0 до 255 (тип unsigned char) или от -128 до 127 (тип signed char) и как один текстовый символ. Сам же тип char может оказаться как знаковым, так и беззнаковым, в зависимости от операционной системы и компилятора. Поэтому использовать типchar не рекомендуется, лучше явно указывать будет ли он знаковым (signed) или беззнаковым (unsigned).
Как и целые числа, данные типа char можно складывать, вычитать, умножать, делить, а можно выводить на экран в виде одного символа. Именно это и происходит при выводе символа через объект cout. Если же нужно вывести числовое значение символа (также называемое ASCII-кодом), то значение символа необходимо преобразовать к типу int. Например:
#include<iostream>
using namespace std;
int main()
{
unsigned char c='A'; // Константы char заключаются в одинарные кавычки
cout<<c<<" "<<(int)c<<endl;
c=126;// char можно присвоить и числовое значение
cout<<c<<" "<<(int)c<<endl;
return 0;
}
Текстовую строку можно представить, как массив символов типа char, но в языке C++ для хранения текстовых строк был создан более удобный тип string. По сути, тип данных string и является массивом символов. Например, если мы объявили переменную S как string S, а затем присвоили ей значение "школа" (текстовые строки заключаются в двойные кавычки), то мы можем обращаться к отдельным символам строки S, представляя S, как массив символов, например, S[0]=='ш',S[1]=='к' и т.д. Для того, чтобы узнать длину строки используется метод length(), вызываемый в виде S.length().
Строковые данные можно считывать с клавиатуры, выводить на экран, присвавать переменным типа string. Также строки можно складывать друг с другом: например, при сложении строк"Hello, " и "world!" получится строка "Hello, world!". Такая операция над строками называется конкатенацией.
Основные приемы работы с объектами string проиллюстрированы в программе:
string S, S1, S2;// Объявление трех строк
cout<<"Как вас зовут? ";
cin>>S1;// Считали строку S1
S2="Привет,";// Присвоили строке значение
S=S2+S1;// Использование конкатенации
cout<<S<<endl;// Вывод строки на экран
cout<<S.length();// Длина строки S
Стандартные функции работы со строками.
Функции работы со строками c
Давайте вначале посмотрим, что нам может дать наша библиотека stdio.h, которая содержит парочку функций работы со строками:
Int getchar()
возвращает значение символа, введенного вами с клавиатуры. А вот и вывод этого числа:
2.char *gets (char *s)
функция просит вводить пользователя строку, которую она помещает в массив s, пока пользователь не нажмет 'Enter':
Int putchar (int c)
печатает символ, который имеет код 'c':
4.int puts (char *s)
печатает строку s и переводит курсор на новую строку:
5.int sprintf (char *s, char *format, ...)
Выполняет тоже, что и функция printf, за тем исключением, что записывает данные в массив s:
6.int sscanf (char *s, char *format, ...)
происходит ввод значений не с клавиатуры, а из массива s:
String.h
Вот перечень функций:
1.char *strcpy (char *srt1, char str2)
Копирует строку str2 в строку str1, возвращаемым значением этой функции является новая, полученная строка str1
2.char *strncpy (char *srt1, char str2, int n)
эта функция делает все тоже самое, что и предвидущая, за исключением того, что тут возможен контроль количества копируемых символов:
3.char *strcat (char *srt1, char str2)
Функция добавляет в строку str1 строку str2. Т.е. на место нуль-терминатора в строке str1, вставляется строка str2:
4.char *strncat (char *srt1, char str2, int n)
Добавляет к первой строке ровно n символов из второй строки