КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Краткие итоги. 1. Для представления текстовой информации в С++ используются символьные данные и строки
1. Для представления текстовой информации в С++ используются символьные данные и строки. 2. Инициализировать строку можно как массив символов. 3. Признаком конца строки является нулевой символ. 4. Обратиться к элементу строки можно по индексу, который соответствует порядковому номеру элемента. 5. Нумерация элементов строки начинается с нуля. Размер строки определяется количеством входящих в нее символов. 6. В С++ предусмотрены различные способы ввода и вывода одиночных символов и строк. При считывании строки с клавиатуры признак конца строки добавляется автоматически. 7. Каждому символу однозначно соответствует его внутренний код.
Для работы со строками используются библиотечные функции, прототипы которых находятся в заголовочных файлах stdlib.h и string.h. В программах, в зависимости от типа, вызовы функций для работы со строками задаются в виде: ИмяФ(СписокАргументов); или ИмяПерем=ИмяФ(СписокАргументов); где ИмяФ – имя функции; СписокАргументов – список аргументов, передаваемых в тело функции; ИмяПерем – идентификатор соответствующего типа. Например: y=strlen(st); /*переменной y присвоить значение длины строки st*/ При использовании библиотечных функций следует учитывать некоторые особенности их выполнения и представления символьных данных в памяти. · Функции, работающие с регистрами, распространяются только на латиницу. · В С++ некоторые параметры функций обработки символов принадлежат типу int (unsigned), поэтому, если число станет больше 128 (255), функция будет работать некорректно. · Перед первым обращением к строке она должна быть объявлена и проинициализирована. Во многих случаях в качестве начального значения строки бывает необходимо задать пустую строку. Такую инициализацию можно выполнить с помощью вызова функции strcpy(s, "");, но более эффективным будет присваивание *s=0;. Кроме того пустую строку можно инициализировать char s[10]=""; или char s[10]="\0";, но при этом размер строки должен быть задан. · Функции копирования (кроме strncpy) не проверяют длину строки. Размер строки-приемника должен быть больше, чем размер источника на 1 символ (для символа '\0'). При вызове функции strncpy следует помнить, что, если длина копируемой строки превосходит параметр kol, то строка-получатель не будет завершена символом '\0'. В этом случае такой символ надо дописывать в конец строки вручную.
Пример 74. Программа демонстрирует работу функций из файла stdlib.h #include "stdafx.h" #include <windows.h> int main() { SetConsoleOutputCP(1251); char sv[]="23.547", si[]="1234", sl[]="-112424", st1[15], st2[25], st3[15]; long l,t=457821; l=atol(sl); printf("Преобразование строки в длинное целое число = %ld\n", l); printf("Преобразование строки в вещественное число = %f\n", atof(sv)); printf("Преобразование строки в целое число = %d\n", atoi(si)); ultoa(t,st1,10); printf("Преобразование длинного целого числа в строку = %s\n", st1); printf("Преобразование длинного целого числа в строку = %s\n", ultoa(t,st2,2)); printf("Преобразование длинного целого числа в строку = %s\n", ultoa(t,st3,16)); system("pause"); return 0; } Результат выполнения программы: Пример 75. Программа демонстрирует работу функций из файла string.h int main() {SetConsoleOutputCP(1251); char st[50],sp[100],str[20]="МАМА МЫЛА РАМУ", si[]="qwerty", sl[]="qwerty", sw[]="qwertyu"; int len=0, sravn1, kol=5; printf("Введите строку: "); gets(st); len=strlen(st); printf("Длина строки = %d\n", len); printf("Конкатенация строк: %s\n", strcat(st,"12cdb")); sravn1=strcmp(si,sl); printf("Сравнение строк: %s==%s результат %d\n", si,sl,sravn1); printf("Сравнение строк: %s<%s результат %d\n", si,sw,strcmp(si,sw)); printf("Сравнение строк: %s>%s результат %d\n", sw,si,strcmp(sw,si)); printf("Копирование байтов: %s\n", strcpy(sp,st)); printf("Преобразование букв нижнего регистра в верхний: %s\n", strupr(st)); printf("Преобразование букв верхнего регистра в нижний: %s\n", strlwr(st)); printf("Копирование %d символов в другую строку: %s\n", kol, strncpy(str,st,kol)); printf("Поиск в строке первого появления символа из другой строки: %s\n", strpbrk(st,si)); printf("Поиск в строке последнего вхождения заданного символа: %s\n", strrchr(st,'d')); system("pause"); return 0; } Результат выполнения программы: Из файла <ctype.h>: int isdigit(int); // определяет, цифра или нет int isalpha(int); //буква int isupper(int); //буква в верхнем регистре int islower(int); //буква в нижнем регистре int isspace(int); //символ – разделитель int ispunct(int); //символ пунктуации (ни один из вышеупомянутых) int isalnum(int); //буква или цифра int toupper(int); //перевод в верхний регистр int tolower(int); //перевод в нижний регистр
Пример 75. Поиск множества неповторяющихся символов строки int main() { SetConsoleOutputCP(1251); char st[80]; int i,j,flag,len; printf("Введите строку: "); gets(st); len=strlen(st); //длина строки printf("Неповторяющиеся символы строки образуют множество: "); for (i=1; i<len; i++) { flag=0; //флаг проверки на совпадение for (j=0; j<i; j++) //сравнение символа с предыдущими if (st[i]==st[j]) flag=1; for (j=i+1; j<len; j++) //сравнение символа с последующими if (st[i]==st[j]) flag=1; if (flag==0) printf("%c", st[i]); } cout<<'\n'; system("pause"); return 0; } Результат выполнения программы: Пример 4. /*Удаление лишних левых и внутренних пробелов в строке при выводе*/ #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]){ char st[80]; int i=0,len; printf("Введите строку: "); gets(st); len=strlen(st);//длина строки printf("Преобразованная строка: "); //Удалены лишние пробелы слева while (st[i++]==' '); //Удалены лишние пробелы внутри строки for (--i;i<len;i++) if ((st[i]!=' ')||(st[i+1]!=' ')) printf("%c",st[i]); //если рядом два пробела system("pause"); return 0; }
Дата добавления: 2014-11-29; Просмотров: 586; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |