
- •1 Масиви
- •2 Рядки і символи
- •Реализация в языках программирования
- •[Править] в языке Си
- •Урок 6. Класс string
- •Класс string
- •Упражнение 3.12
- •Упражнение 3.13
- •Упражнение 3.14
- •Упражнение 3.15
- •Клас string: конструктори і присвоєння рядків, операції, відкладене копіювання Клас string: конструктори і присвоєння рядків, операції, відкладене копіювання
- •2 Рядки і символи
2 Рядки і символи
Рядок являє собою масив символів, що закінчується нуль-символом. Нуль символ – це символ з кодом 0. Може записуватися у вигляді керуючої послідовності ’\0’.
Приклади
char s1[15];
unsigned char m[10];
При описі рядок може бути ініціалізований строковим літералом (послідовність символів, узята в подвійних лапки), нуль-символ при цьому додається компілятором автоматично.
Приклад
char s[10]=”stroka”;
У цьому випадку для рядка s виділяється 10 байт пам'яті, шість байт будуть зайняті під символи рядка, сьомий – під нуль символ.
Якщо рядок при визначенні ініціалізується, то його розмірність можна опустити (компілятор сам виділить потрібне число байт).
Приклад
char s[]=”stroka”;
Операція присвоювання одного рядка іншим не визначена (тому що рядок є масивом) і повинна виконуватися за допомогою циклу або функцій стандартної бібліотеки.
Введення/виведення рядків у стилі C++
Використовуються класи cin (метод getline) і cout. (заголовний файл <iostream.h>)
Приклад
#include <iostream.h>
void main()
{
const int n=20;
char st[n];
cout<<"Ввести рядок="
cin.getline(st,n);
cout<<"Введений рядок="<<st<<endl;
}
Пояснення: Метод getline() зчитує з вхідного потоку n-1 символів або менше (якщо символ пеходу рядка \n зустрінеться раніш) і записує їх у строкову змінну st. При цьому з вхідного потоку вилучається символ переходу рядка, а в рядок додається завершальний нуль-символ. Якщо у вхідному потоці більш n-1 символів, то при виконанні наступної операції введення будуть зчитуватися символи, що залишилися.
Для виведення рядка можна використовувати метод cout.
Введення/виведення рядків у стилі C
Використовуються функції gets() (введення), а також puts() і printf() (виведення). Заголовний файл <stdio.h>
Приклад
#include <stdio.h>
void main()
{
const int n=20;
char st[n];
printf("Ввести рядок=");
gets(st);
printf("Введений рядок=%s\n",st);
}
Пояснення: Функція gets() зчитує символи з клавіатури до появи символу ‘\n’ (натискання на Enter) і поміщає їх у рядок st. При цьому в рядок замість символу ‘\n’ заноситься нуль-символ.
Функцією printf() зручно користатися в тих випадках, коли потрібно вивести дані різних типів. Якщо потрібно виведення тільки рядків, то краще використовувати функцію puts().
Функція puts() виводить рядок на стандартний пристрій виведення, при цьому нуль-символ заміняється на символ нового рядка ‘\n’. Повертає позитивне значення при успішному виведенні і EOF при помилці.
Приклад
#include <stdio.h>
void main()
{
const int n=20;
char st[n];
printf("Ввести рядок=");
gets(st);
puts(st);
}
Для введення будь-яких символів, включаючи пробільні, можна використовувати наступне:
Введення за допомогою класу cin (метод get()). Заголовний файл
<iostream.h>)
Приклад
#include <iostream.h>
void main()
{
char ch;
ch=cin.get();
}
Функції getchar()– введення символу і putchar() – виведення символу. Заголовний файл <stdio.h>.
Приклад
#include <stdio.h>
void main()
{
char ch;
ch=getchar(); //введення символу
putchar(ch) //виведення символу
}
Для зчитування коду символу з клавіатури без відображення символу на екрані використовується функція getch() (аналог функції ReadKey у Турбо Паскалі). Заголовний файл <conio.h>.
Приклад
#include <conio.h>
#include <stdio.h>
void main()
{
char ch;
ch=getch(); //Введення символу
printf("Уведений символ=%c",ch);
}
Примітка – Для функціональних клавіш функцію getch() необхідно застосувати двічі, тому що при їхньому натисканні генерується двохсимвольний код (перший символ – нульовий).
Стандартное пространство имен std
Наилучший пример пространств имен можно найти в стандартной библиотеке С++. Все функции, классы, объекты и шаблоны стандартной библиотеки объявлены внутри пространства имен std.