В C++ работа со строками осуществляется с помощью символьных массивов. Для этого строку представляют конечным набором символов, с которым можно работать при помощи массива типа char.
Простейший пример выглядит так
1 |
char str [] = "abc"; |
Создался нефиксированный массив символов, который получил 3 элемента. Вызвать можно любой из этих символов, указав его номер.
1 |
char a = string[2]; |
Существует множество функций для работы с таким представлением строк.
Для примера возьмем часть кода.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <string.h> // подключаем файл с функциями для работы со строками int main() { char s [100] = "aaaaa"; char s1 [100] = "bbbbbb"; char s2 [100] = "ccccccc"; int a = strlen(s); // после этой строки a=5 strcpy(s,s2); // после этой строки s = ccccccc strncpy(s1,s2,1); // будет s1 = cbbbbb strcat(s1,s2); // будет s1 = cbbbbbccccccc strncat(s1,s1,3); // будет s1 = cbbbbbccccccccbb int b = strcmp(s1,s2); //b будет меньше 0 return 0; //возвращаем 0 - правило хорошего тона программиста } |
Первые две строки ушли на создание строк. Третья строка вычисляет длину s с помощью функции strlen. Функция strcpy выполняет копирование строки s2 в s, при этом идет полная замена предыдущих символов. Функции strcat не копирует, а объединяет строки, результат объединения сохраняется в первую строку, в данном случае в s.
Расширения для предыдущих функций strncpy и strncat добавляют параметр, указывающий с каким количеством символов из второй строки будет работать функция. Последняя strcmp сравнивает 2 строки, выводя 0, если они равны, и +1 или -1 если одна из строк больше. Строки рассматриваются посимвольно, и результат рассчитывается по числовому коду первых неодинаковых символов.
Следует отметить, что функции strcpy, strncpy, strcat, strncat не следят за выделением памяти, так что память нужно выделять с помощью других команд. В данном примере в самом начале для каждой строки зарезервировано место под хранение 100 символов.