Приклад діалогу
Введіть будь-що:
Шла Саша по шоссе и сосала сушку
ШлаСаша—Кінець виводу
Як ви думаєте чому такий вивід? У С++ кожна із змінних отримує тільки по одному введеному слову, змінній а присвоюється строкове значення «Шла», а змінній b значення «Саша», тому що після нього стоїть пробіл. Для читання всієї вводимої строки і присвоєння її змінній потрібно використовувати функцію getline.
Наприклад,
char a[80];
cout<<”Введіть будь-що: ”<<endl;
cin.getline(a,80);
cout<<a <<”—Кінець виводу”<<endl;
Приклад діалогу
Введіть будь-що:
Шла Саша по шоссе и сосала сушку
Шла Саша по шоссе и сосала сушку—Кінець виводу
Якщо строка коротше того, що ввів користувач, то «зайве» відкидається
Наприклад,
char a[11];
cout<<”Введіть будь-що: ”<<endl;
cin.getline(a,11);
cout<<a <<”—Кінець виводу”<<endl;
Приклад діалогу
Введіть будь-що:
Шла Саша по шоссе и сосала сушку
Шла Саша п—Кінець виводу
Багатомірні масиви
Іноді зручно працювати з масивом у якого не один індекс, а декілька. Нижче приведений приклад, масив під назвою page, який має два індекса(перший з них вимірюється від 0 до 29., а другий від 0 до 99.
char page [30] [100];
Даний масив складається з наступних елементів:
page [0] [0], page [0] [1], ………….. , page [0] [99]
page [1] [0], page [1] [1], ………….. , page [1] [99]
………………………………………………………
page [29] [0], page [29] [1], ………….. , page [29] [99]
Кожен індекс має свою пару квадратних дужок. Даний масив містить 30 строк і 100 стовбців.
Звичайні строки мають тип string і їм властиві такі функції:
Функція |
Опис функції |
string str; |
Створює пустий об’єкт типу string |
string str(“oooooobh”); |
Створює об’єкт типу string із значенням “oooooobh” |
str[i] |
Звертання для читання та запису до символу з індексом і |
str.substr(position,length) |
Повертає підстроку об’єкта, яка почитається з позиції position, і має довжину length |
str.c_str() |
Надає доступ для читання С-строки, представленої об’єктом string |
str.at(i) |
Звертається для читання та запису до строки string і індексу і |
str1=str2 |
Виділяє для строки str1 об’єм пам’яті рівний довжині строки str2 і ініціалізує строку str1 значенням str2 |
str1+=str2 |
Символи строки str2 додаються в кінець строки str1, для якої виділяється необхідний об’єм пам’яті |
s.empty() |
Якщо строка s пуста, повертає значення True, якщо не пуста, то повертає значення false. |
str1+str2 |
Повертає строку, яка є об’єднанням строк str2 і str1. Виділяє необхідний об’єм пам’яті для результуючої строки |
str.insert(pos, str2) |
Поміщає строку str2 в строку str, починаючи з позиції pos |
str.remove(pos, len) |
Видаляє із строки str підстроку довжиною len починаючи з позиції pos |
str1 = = str2 |
Перевіряє чи рівні строки та повертає відповідне логічне значення |
srt1 ! = str2 |
|
str1 < str2 str1 > str2 str1 >= str2 str1 < = str2 |
Порівнює строки |
str.find(str1) |
Повертає індекс початку підстроки str1, яка входить в строку str |
str.find(str1, pos) |
Повертає індекс початку підстроки str1, яка входить в строку str, пошук починається з позиції pos |
str.find_first_of(str1, pos) |
Визначає в якій позиції в строчці str зустрічається перший символ, який присутній у строчці str1, пошук починається з позиції pos |
str.find_first_not_of(str1, pos) |
Визначає в якій позиції в строчці str зустрічається перший символ, який відсутній у строчці str1, пошук починається з позиції pos |
Оператори при рівняння та порівняння дають логічні результати, які зрозумілі кожному. Немає таких проблем, як з використанням С-строк.
Масиви строк використовуються таким же чином, як і інші масиви. Наприклад,
string list[20];
cout<<”Введіть 20 імен, кожне в окремій строчці:”<endl;
int i;
for(i=0; i<20; i++)
getline(cin,list[i]);
cout<<”Ось вони, ці 20 імен:”<<endl;
for(i=0; i<20; i++)
cout<<list[i]<<endl;
