Доклад. Работа со строками. Основы работы со строками в C
Скачать 15.5 Kb.
|
Основы работы со строками в C++ В языке C++ для удобной работы со строками есть класс string, для использования которого необходимо подключить заголовочный файл (библеотеку) string. Строки можно объявлять и одновременно присваивать им значения: string S1, S2 = "Hello"; Строка S1 будет пустой, строка S2 будет состоять из 5 символов. К отдельным символам строки можно обращаться по индексу, как к элементам массива или C-строк. Например S[0] - это первый символ строки. Для того, чтобы узнать длину строки можно использовать метод size() строки. Например, последний символ строки S это S[S.size() - 1]. Конструкторы строк Строки можно создавать с использованием следующих конструкторов: string() - конструктор по умолчанию (без параметров) создает пустую строку. string(string & S) - копия строки S string(size_t n, char c) - повторение символа c заданное число n раз. string(size_t c) - строка из одного символа c. string(string & S, size_t start, size_t len) - строка, содержащая не более, чем len символов данной строки S, начиная с символа номер start. Конструкторы можно вызывать явно, например, так: S += string(10, 'z'); В этом примере явно вызывается конструктор string для создания строки, состоящей из 10 символов 'z'. Неявно конструктор вызывается при объявлении строки с указанием дополнительных параметров. Например, так: string S(10, 'z'); Ввод-вывод строк Строка выводится точно так же, как и числовые значения: cout << S; Для считывания строки можно использовать операцию ">>" для объекта cin: cin >> S; В этом случае считывается строка из непробельных символов, пропуская пробелы и концы строк. Это удобно для того, чтобы разбивать текст на слова, или чтобы читать данные до конца файла при помощи while (cin >> S). Можно считывать строки до появления символа конца строки при помощи функции getline. Сам символ конца строки считывается из входного потока, но к строке не добавляется: getline(cin S); Арифметические операторы Со строками можно выполнять следующие арифметические операции: = - присваивание значения. += - добавление в конец строки другой строки или символа. + - конкатенация двух строк, конкатенация строки и символа. ==, != - посимвольное сравнение. <, >, <=, >= - лексикографическое сравнение. То есть можно скопировать содержимое одной строки в другую при помощи операции S1 = S2, сравнить две строки на равенство при помощи S1 == S2, сравнить строки в лексикографическом порядке при помощи S1 < S2, или сделать сложение (конкатенацию) двух строк в виде S = S1 + S2. Методы строкУ строк есть разные методы, многие из них можно использовать несколькими разными способами (с разным набором параметров). Рассмотрим эти методы подробней. sizeМетод size() возращает длину длину строки. Возвращаемое значение является беззнаковым типом (как и во всех случаях, когда функция возращает значение, равное длине строке или индексу элемента - эти значения беззнаковые). Поэтому нужно аккуратно выполнять операцию вычитания из значения, которое возвращает size(). Например, ошибочным будет запись цикла, перебирающего все символы строки, кроме последнего, в виде for (int i = 0; i < S.size() - 1; ++i). Кроме того, у строк есть метод length(), который также возвращает длину строки. resizeS.resize(n) - Изменяет длину строки, новая длина строки становится равна n. При этом строка может как уменьшится, так и увеличиться. Если вызвать в виде S.resize(n, c), где c - символ, то при увеличении длины строки добавляемые символы будут равны c. clearS.clear() - очищает строчку, строка становится пустой. |