Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
21
Добавлен:
30.05.2020
Размер:
428.13 Кб
Скачать

Функция char * strpbrk (char *s1, const char *s2)

возвращает указатель на символ, являющийся первым вхождением любого из символов строки s2 в строку s1. Если символ не найден, то возвращается указатель NULL.

const int MAX = 80;

char s1[MAX]="abcdef", s2[MAX]="cf"; char *s= strpbrk(s1, s2);

cout << int(s-s1) << endl; //2

Преобразование и заполнение строк

(<stdlib.h> , <сstdlib>)

преобразование строки в число

Преобразуемая в число строка может содержать:

последовательность цифр;

запись вещественного числа в форме с фиксированной точкой или в экспоненциальной форме ( с наличием десятичной точки, цифр порядка и символов е или Е, например,

12.345Е- 2);

символы пробела, табуляции, знака числа.

Признаком конца записи числа в преобразуемой строке является первый символ, который не может быть интерпретирован как символ числа соответствующего типа.

Функция double atof (char *s)

преобразует строку s, содержащую символьное представление вещественного числа,

в соответствующее десятичное вещественное число; признаком конца числа служит

первый символ, который не может быть интерпретирован как принадлежащий числу.

char st[10]="1.2e02.";

 

double d = atof(st);

//120

cout<<d<<endl;

Функция int atoi (char *s)

преобразует строку s, содержащую символьное представление целого числа, в соответствующее десятичное целое число; признаком конца числа служит первый символ, который не может быть интерпретирован как принадлежащий числу.

char st[10]="125.";

 

int d = atoi(st);

//125

cout<<d<<endl;

Функция long atol (char *s)

преобразует строку s, содержащую символьное представление целого числа, в

соответствующее десятичное длинное целое число; признаком конца числа служит

первый символ, который не может быть интерпретирован как принадлежащий числу.

char

st[10]="1234567aa";

long

d = atoi(st);

//1234567

cout<<d<<endl;

Функция long strtol (const char *s, char **endptr, int base)

преобразует строку s, содержащую символьное представление целого числа, в соответствующее десятичное длинное целое число в системе счисления base;

признаком конца числа служит первый символ строки endptr, который не может быть интерпретирован как принадлежащий числу.

#include <stdlib.h> int main()

{

const int MAX = 80;

Программирование – лекция 13 (лекции Стрикелевой Л.В.)

19

 

char

str[MAX] = "a";

char

*endptr;

long

il;

il = strtol(str, &endptr, 2);

//0 a, а является ошибочным символом в 10 с/с

cout<<il<< "

"<<endptr <<endl;

cout<<endl;

 

 

il = strtol(str, &endptr, 16);

//10

cout<<il<< "

"<<endptr <<endl;

_getch();

 

 

return 0;

 

 

}

Функция double strtod (const char *s, char **endptr)

преобразует строку s, содержащую символьное представление вещественного числа, в соответствующее десятичное вещественное число; признаком конца числа служит

первый символ строки endptr, который не может быть интерпретирован как принадлежащий числу.

#include <stdlib.h>

 

int main()

 

 

 

{

 

 

 

const int MAX = 80;

 

char

str[MAX]="3.1415", str1[MAX]="3.1415e+00",str2[MAX]="3.14#00";

char *endptr;

 

double

d;

 

 

d = strtod(str, &endptr);

 

cout<<d<<"

" << endptr<<endl; //3.1415

d = strtod(str1, &endptr);

//3.1415

cout<<d<<"

" << endptr<<endl;

d = strtod(str2, &endptr);

//3.14 #00

cout<<d<<"

" << endptr<<endl;

_getch(); return 0;

}

преобразованиечисла в строку

Функция char * itoa (int i, char *s, int c)

преобразует целое i (переведенное в с/с 2<c<36) в строку s; c – основание системы счисления.

char st[10]="";

 

int i =

120;

//warning C4996: 'itoa' was declared deprecated

itoa(i,

st, 10);

cout<<st<<endl;

//120

itoa(i,

st, 16);

//warning C4996: 'itoa' was declared deprecated

cout<<st<<endl;

//78

itoa(i,

st, 2);

//warning C4996: 'itoa' was declared deprecated

cout<<st<<endl;

//1111000

Функция errno_t _itoa_s (int value, char *buffer, size_t sizeInCharacters, int radix);

Возвращает 0 при успешном завершении и код ошибки – в противном случае.

char st[10]="";

 

int i = 120;

 

_itoa_s(i, st,10, 10);

//120

cout<<st<<endl;

_itoa_s(i, st,10, 16);

//78

cout<< st<<endl;

Программирование – лекция 13 (лекции Стрикелевой Л.В.)

20

 

_itoa_s(i, st,10, 2);

//1111000

cout<< st<<endl;

Шаблонная функция (только в С++) template <size_t size>

errno_t _itoa_s (int value, char (*buffer)[ size], int radix);

позволяет вызывать функцию в привычном виде:

char st[10]=""; int i = 120;

_itoa_s (i, st, 10); cout<<st<<endl; //120

_itoa_s (i,

st,

16);

//78

cout<<st<<endl;

_itoa_s (i,

st,

2);

//1111000

cout<<st<<endl;

Функция char * ltoa (long il, char *s, int c)

преобразует длинное целое il (переведенное в с/с 2<c<36) в строку s; c – основание системы счисления (2<c<36) (аналогично itoa()).

Функция char * ultoa (unsigned long ul, char *s, int c)

преобразует беззнаковое длинное целое ul (переведенное в с/с 2<c<36) в строку s; c – основание системы счисления (2<c<36) (аналогично itoa() и ltoa()).

Функция char *fcvt (double value, int count, int *dec, int *sign)

возвращает строку, в которую преобразует вещественное число value, для которого задано количество цифр в дробной части строкового представления (count); функция возвращает также количество цифр в целой части (dec), и знак числа (sign).

int drob=5, celoe, sign; char *stroka;

double d=3.141592;

stroka = fcvt( d, drob, &celoe, &sign );

//warning C4996: 'fcvt' was declared deprecated cout<< stroka <<" "<< celoe<<" "<< sign<<endl; //314159 1 0

Функция errno_t _ fcvt_s (char *buffer, size_t sizeInBytes, double value, int count, int *dec, int *sign)

возвращает 0 при успешном завершении и код ошибки – в противном случае.

int drob=5, celoe, sign; char stroka[20];

double d=3.141592;

_fcvt_s( stroka, 20, d, drob, &celoe, &sign );

cout<< stroka <<" "<< celoe<<" "<< sign<<endl; //314159 1 0

Шаблонная функция (только в С++) template <size_t size>

errno_t _fcvt_s (char (*buffer)[ size], double value, int count, int *dec, int *sign)

позволяет вызывать функцию в виде:

int drob=5, celoe, sign; char stroka[20];

double d=3.141592;

_fcvt_s( stroka, d, drob, &celoe, &sign );

cout<< stroka <<" "<< celoe<<" "<< sign<<endl; //314159 1 0

преобразование строчных символов строки в прописные и наоборот

Программирование – лекция 13 (лекции Стрикелевой Л.В.)

21

 

//warning C4996: 'strupr' was declared deprecated
//ABCDEF

int tolower (int c)

преобразует прописные латинские буквы в строчные

int toupper (int c)

преобразует строчные латинские буквы в прописные

Функция char * strupr (char *s)

преобразует все символы строчных букв строки s в символы прописных букв и возвращает указатель на ее начало.

const int MAX = 80; char str[MAX]="abcdef"; char * s;

s = strupr(str); cout<<s<<endl;

Функция errno_t _strupr_s (char *str, size_t sizeInBytes)

возвращает 0 при успешном завершении и код ошибки – в противном случае.

const int MAX = 80; char str[MAX]="abcdef"; _strupr_s(str, MAX);

cout<<str<<endl; //ABCDEF

Шаблонная функция (только в С++) template <size_t size>

errno_t _strupr_s (char (*str)[ size])

позволяет вызывать функцию в виде:

const int MAX = 80; char str[MAX]="abcdef"; _strupr_s(str);

cout<<str<<endl; //ABCDEF

Функция char * strlwr (char *s)

преобразует все символы прописных букв строки s в символы строчных букв и возвращает указатель на ее начало.

const int MAX =

80;

char str [MAX]="ABCDEFG";

char * s;

//warning C4996: 'strlwr' was declared deprecated

s = strlwr(str);

cout<<s<<endl;

//abcdefg

Функция errno_t _strlwr_s (char *str, size_t sizeInBytes);

возвращает 0 при успешном завершении и код ошибки – в противном случае.

const int MAX =

80;

char str [MAX]="ABCDEFG";

_strlwr_s(str,MAX);

cout<<str<<endl;

//abcdefg

Шаблонная функция (только в С++)

template <size_t size>

errno_t _strlwr_s (char (*str)[ size]);

позволяет вызывать функцию в виде:

const int MAX =

80;

char str [MAX]="ABCDEFG";

_strlwr_s(str);

//abcdefg

cout<<str<<endl;

реверс строки

Функция char * strrev (char *s)

Программирование – лекция 13 (лекции Стрикелевой Л.В.)

22

 

Соседние файлы в папке Лабораторні роботи