Функции работы со строками и символами в C++
Строка - массив символов, заканчивающийся нуль-символом.
В С++ две возможности работы со строками:
• функции, унаследованные из библиотеки С (заголовочный файл или );
• библиотечный класс C++ string, предоставляющий более широкие возможности представления, обработки и контроля строк.
Библиотека С++ содержит функции:
• копирования строк (strcpy, strncpy);
• сравнения (strcmp, strncmp);
• объединения строк (strcat, strncat);
• поиска подстроки (strstr);
• поиска вхождения символа (strchr, strrchr, strpbrk);
• определения длины строки (strlen)
• другие.
В заголовочных файлах и содержатся функции преобразования строк в числа (обратные преобразования можно сделать с помощью функции sprintf):
• double atof(const char* p) преобразует переданную строку в double;
• int atoi (const char* p) преобразует переданную строку в int;
• long atol (const char* p) преобразует переданную строку в long.
Важно. Пробелы и табуляции в начале строки пропускаются.
Важно. Преобразование прекращается при встрече недопустимого символа или конца строки.
Важно. Если строку нельзя преобразовать в число, возвращается 0. Если число выходит за пределы диапазона данного типа, переменной еrrno (заголовочный файл <сеrrno>) присваивается значение ERANGE и возвращается допустимое число.
Пример (программа заполняет массив типа double из строки):
Для работы с символами в стандартной библиотеке (заголовочные файлы
и ) имеются функции:
Функции принимают величину типа int и возвращают значение true, если условие выполняется.
Важно. Рекомендуется пользоваться стандартными функциями, а не писать собственные циклы проверки, так как это снижает количество ошибок в программе.
В библиотеке есть функции tolower и toupper, переводящие символ латинского алфавита соответственно в нижний и верхний регистр.
Для каждой из перечисленных функций есть ее аналог для многобайтных символов типа wchar_t, содержащий в названии букву w.
• функции, унаследованные из библиотеки С (заголовочный файл
• библиотечный класс C++ string, предоставляющий более широкие возможности представления, обработки и контроля строк.
Библиотека С++ содержит функции:
• копирования строк (strcpy, strncpy);
• сравнения (strcmp, strncmp);
• объединения строк (strcat, strncat);
• поиска подстроки (strstr);
• поиска вхождения символа (strchr, strrchr, strpbrk);
• определения длины строки (strlen)
• другие.
В заголовочных файлах
• double atof(const char* p) преобразует переданную строку в double;
• int atoi (const char* p) преобразует переданную строку в int;
• long atol (const char* p) преобразует переданную строку в long.
Важно. Пробелы и табуляции в начале строки пропускаются.
Важно. Преобразование прекращается при встрече недопустимого символа или конца строки.
Важно. Если строку нельзя преобразовать в число, возвращается 0. Если число выходит за пределы диапазона данного типа, переменной еrrno (заголовочный файл <сеrrno>) присваивается значение ERANGE и возвращается допустимое число.
Пример (программа заполняет массив типа double из строки):
#include#1nclude #include int maln(){ 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 к = 0; к < i; k++) printf("^5.2f ", m[k]); return 0; }
Важно. Рекомендуется пользоваться стандартными функциями, а не писать собственные циклы проверки, так как это снижает количество ошибок в программе.
В библиотеке есть функции tolower и toupper, переводящие символ латинского алфавита соответственно в нижний и верхний регистр.
Для каждой из перечисленных функций есть ее аналог для многобайтных символов типа wchar_t, содержащий в названии букву w.