Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Представление символьной информации
Для символьных данных в C++ введен тип char. Для представления символьной информации используются символы, символьные переменные и текстовые константы.
//символ занимает один байт, его значение не меняется const char c=’c’;
/*символьные переменные, занимают по одному байту, значения могут меняться*/ char a,b;
//текстовая константа const char *s=”Пример строки\n”; Строка в C++ – это массив символов, заканчивающийся нуль-символом – ’\0’ (нуль-терминатором). По положению нуль-терминатора определяется фактическая длина строки. Количество элементов в таком массиве на 1 больше, чем изображение строки.
Рис. 7. Представление строки и символа Присвоить значение строке с помощью оператора присваивания нельзя. Поместить строку в массив можно либо при вводе, либо с помощью инициализации.
void main() { char s1[10]="string1"; int k=sizeof(s1); cout<<s1<<"\t"<<k<<endl; char s2[]="string2"; k=sizeof(s2); cout<<s2<<"\t"<<k<<endl; char s3[]={‘s’,’t’,’r’,’i’,’n’,’g’,’3’} k=sizeof(s3); cout<<s3<<"\t"<<k<<endl;
//указатель на строку, ее нельзя изменить: char *s4="string4"; k=sizeof(s4); cout<<s4<<"\t"<<k<<endl; }
Результаты: string1 10 – выделено 10 байтов, в том числе под \0 string2 8 – выделено 8 байтов (7+1байт под \0) string3 8 – выделено 8 байтов (7+1байт под \0) string4 4 – размер указателя
char *s=”String5”; //выделяется 8 байтов для строки char* ss; //описан указатель
/*память не выделяется, поэтому программа может закончиться аварийно: */ ss=”String6”;
char *sss=new char[10]; //выделяем динамическую память strcpy(sss,”String7”); //копируем строку в память
Для ввода и вывода символьных данных в библиотеке языка C определены следующие функции: int getchar(void) – осуществляет вод одного символа их входного потока, при этом она возвращает один байт информации (символ) в виде значения типа int. Это сделано для распознавания ситуации, когда при чтении будет достигнут конец файла. int putchar (int c) – помещает в стандартный выходной поток символ c. char* gets(char*s) – считывает строку s из стандартного потока до появления символа ’\n’, сам символ ’\n’ в строку не заносится. int puts(const char* s) записывает строку в стандартный поток, добавляя в конец строки символ ’\n’, в случае удачного завершения возвращает значение больше или равное 0 и отрицательное значение (EOF=-1) в случае ошибки.
char s[20]; cin>>s; //ввод строки из стандартного потока cout<<s; //вывод строки в стандартный поток
При вводе строки ”123 456 789”, чтение байтов осуществляется до первого пробела, т. е. в строку s занесется только первое слово строки ”123\0”, следовательно, выведется: 123.
char s[20]; gets(s); //ввод строки из стандартного потока puts(s); //вывод строки в стандартный поток
При вводе строки ”123 456 789”, чтение байтов осуществляется до символа ’\n’, т. е. в s занесется строка ”123 456 789\n\0”, при выводе строки функция puts возвращает еще один символ ’\n’, следовательно, будет выведена строка ”123 456 789\n\n”.
char s[20]; scanf(“%s”,s); //ввод строки из стандартного потока printf(“%s”,s); //вывод строки в стандартный поток При вводе строки ”123 456 789”, чтение байтов осуществляется до первого пробела, т. е. в строку s занесется только первое слово строки ”123/0”, следовательно, выведется: 123. Т. к. s – имя массива, т. е. адрес его первого элемента, операция & в функции scanf не используется. Библиотечные функции для работы со строками Для работы со строками существуют специальные библиотечные функции, которые содержатся в заголовочном файле string.h. Таблица 1. Некоторые библиотечные функции для работы со строками |
||||||||||
Последнее изменение этой страницы: 2018-04-12; просмотров: 338. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |