Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Функции работы со строками и символами






Строка представляет собой массив символов, заканчивающийся нуль-символом. В C++ есть две возможности работы со строками: функции, унаследованные из библиотеки С (заголовочный файл < string.h> или < cstring>), и библиотечный класс C++ string, предоставляющий более широкие возможности представления, обработки и контроля строк (он рассматривается в разделе «Строки»).

Библиотека С содержит функции копирования строк (strcpy, strncpy), сравнения (strcmp, strncmp), объединения строк (strcat, strncat), поиска подстроки (strstr), поиска вхождения символа (strchr, strrchr, strpbrk), определения длины строки (strlen) и другие. Полный список функций приведен в приложении 6.

В заголовочных файлах < stdlib.li> и < cstdlib> содержатся полезные функции преобразования строк в числа (обратные преобразования можно сделать с помощью функции sprintf):

double atof(const char* p) преобразует переданную строку в double;

int atoi (const char* p) преобразует переданную строку в int;

long atol (const char* p) преобразует переданную строку в long.

Пробелы и табуляции в начале строки пропускаются. Преобразование прекращается при встрече недопустимого символа или конца строки. Если строку нельзя преобразовать в число, возвращается 0. Если число выходит за пределы диапазона данного типа, переменной еrrnо (заголовочный файл < cerrno>) присваивается значение ERANGE и возвращается допустимое число. Пример (программа заполняет массив типа double из строки):

#include < stdio.h>

#include < string.h>

#include < stdlib.h>

int main(){

char s[] = " 2, 38.5, 70, 0, 0, 1", *p = s;

double m[10];

int i = 0;

do{

m[i++] = atof(p);

if (i> 9)break;

}while(p = strchr(p, ', '), p++);

for(int k = 0; k< i; k++) printf(" %5.2f ", m[k]),

return 0;

}

Для работы с символами в стандартной библиотеке (заголовочные файлы < ctype. h> и < cctype>) есть следующие функции:

ИМЯ Проверка на принадлежность символа множеству
isalnum букв и цифр (A-Z, a-z, 0-9
isalfa букв (A-Z, a-z)
iscntrl управляющих символов (с кодами 0..31 и 127)
isdigit цифр (0-9)
isgraph печатаемых символов, кроме пробела (isalfa | isdigit | ispunct)
islower букв нижнего регистра (a-z)
isprint печатаемых символов
ispunct знаков пунктуации
isspace символов-разделителей
isupper букв верхнего регистра (A-Z)
isxdigit шестнадцатиричных цифр (A-F, a-f, 0-9)

Функции принимают величину типа int и возвращают значение true, если условие выполняется. Рекомендуется пользоваться стандартными функциями, а не писать собственные циклы проверки, так как это снижает количество ошибок в программе.

Кроме описанных выше, в библиотеке есть функции tolower и toupper, переводящие символ латинского алфавита соответственно в нижний и верхний регистр.

Для каждой из перечисленных функций есть ее аналог для многобайтных символов типа wchar_t, содержащий в названии букву w. Эти функции также описаны в приложении 6.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.