Глава 8
Строки в языке C++
В главе дано общее представление о строках в C++. Описана их структура,
способы инициализации, возможности ввода-вывода, приведены примеры обра-
ботки строк и текстов.
8.1
Общие сведения о строках в C++
Строка
— последовательность символов. Для работы с символами в языке
C++
предусмотрен тип данных char. Если в выражении встречается одиночный
символ, он должен быть заключён в одинарные кавычки. При использовании в
выражениях строка заключается в двойные кавычки. Признаком конца строки
является нулевой символ ’\0’. В C++ строки можно описать с помощью массива
символов (массив элементов типа char), в массиве следует предусмотреть место
для хранения признака конца строки (’\0’).
Например,
char s [ 2 5 ] ; //Описана строка из 25 символов.
//Элемент s[25] предназначен для хранения символа конца строки.
char s [ 1 5 ] = "Привет" ; //Описана строка из 15 символов и ей присвоено значение.
//Определён массив из 3 строк по 30 байт в каждой.
char m[ 3 ] [ 3 0 ] = { "Пример " , "использования" , " строк" }
Для работы со строками можно использовать указатели (char *). Адрес пер-
вого символа будет начальным значением указателя.
Рассмотрим пример объявления и ввода строк.
#include
using namespace s t d ;
i n t main ( )
{
char s 2 [ 2 5 ] , ∗ s3 , s 4 [ 3 0 ] ; //Описываем 3 строки, s3 — указатель.
cout<<"Введите строку:"<cout<<" s2 = " ; c i n >>s 2 ; //Ввод строки s2.
cout<<"Была введена строка:"<cout<<" s2 = "<s 3=s 4 ; //Запись в s3 адреса строки s4. Теперь в указателях s3 и s4 хранится один адрес.
cout<<"Введите строку:"<cout<<" s3 = " ; c i n >>s 3 ; //Ввод строки s3.
cout<<"Была введена строка:"<
8.2. Операции над строками
243
cout<<" s3 = "<cout<<"Сформирована новая строка:"<cout<<" s4 = "<return 0 ;
}
Если запустить эту программу на выполнение, то в консольном окне прило-
жения будет получен следующий результат.
Введите строку:
s2=Привет!
Была введена строка:
s2=Привет!
Введите строку:
s3=Программируем?
Была введена строка:
s3=Программируем?
Сформирована новая строка:
s4=Программируем?
Однако если во вводимых строках появятся пробелы, программа будет работать
не так, как ожидает пользователь:
Введите строку:
s2=Привет, Вася!
Была введена строка:
s2=Привет,
Введите строку:
s3=Была введена строка:
s3=Вася!
Сформирована новая строка:
s4=Вася!
Дело в том, что функция cin вводит строки до встретившегося пробела. Более
универсальной функцией является функция
cin.getline(char *s, int n);
она предназначена для ввода с клавиатуры строки s с пробелами, причём в
строке не должно быть более n символов. Например,
char s [ 2 5 ] ;
cout<<"Введите строку:"<cout<<" s2 = " ; c i n . g e t l i n e ( s , 2 5 ) ;
cout<<"Была введена строка:"<cout<<" s2 = "<Результат:
Введите строку:
s2=Привет, Вася!
Была введена строка:
s2=Привет, Вася!
8.2
Операции над строками
Строку можно обрабатывать как массив символов, используя алгоритмы об-
работки массивов, или с помощью специальных функций обработки строк, неко-
торые из которых приведены в таблицах 8.1–8.2.
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.
244
Do'stlaringiz bilan baham: |