- •Работа со строками методические указания
- •Содержание
- •Цель работы
- •1. Общие положения
- •1.1 Описание символьных и строковых переменных
- •1.2 Стандартные функции работы со строками
- •1.3 Чтение символьных строк из потока ввода
- •1.3.2 С помощью функцииgetline()
- •2. Содержание работы
- •3. Требования к отчету
- •4. Контрольные вопросы
- •Приложение а
- •Приложение б Стандартные функции работы со строками
- •Приложение в Задания для самостоятельного выполнения на строки
- •Приложение г Задания для самостоятельного выполнения на массивы строк
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное
учреждение высшего профессионального образования
Уфимский государственный авиационный технический университет
Кафедра экономической информатики
ИЗУЧЕНИЕ ИНТЕГРИРОВАННОЙ СРЕДЫ BORLAND C++.
Работа со строками методические указания
к лабораторным работам по курсу «Программирование»
Уфа 2012
Составитель: Е.И. Филосова
ББК
УДК 519.682
Методические указания к лабораторным работам по курсу «Программирование» для студентов направления 080500 «БИЗНЕС ИНФОРМАТИКА» / Уфимский государственный авиационный технический университет; Составитель Е.И. Филосова, Уфа, 2012
В методических указаниях представлена лабораторная работа №5 по изучению раздела «Строки» дисциплины «Программирование». Представлены примеры, контрольные вопросы и задания для самостоятельной работы. Методические указания могут быть так же использованы в курсовом и дипломном проектировании.
Ил. 1, табл. 0
Рецензенты: доц.
доц.
© Уфимский государственный авиационный технический университет, 2012
Содержание
Цель работы 5
1. Общие положения 5
1.1 Описание символьных и строковых переменных 5
#include <iostream.h> 6
#include <conio.h> 6
int main(){ 6
char s[20]; 6
int k=0; 6
int i; 6
for(i=1;i<=7;i++){ 6
cout << "Введите слово"; 6
cin>>s; 6
if (s[0]=='D' || s[0]=='d') k=k+1; 6
} 6
cout << k; 6
getch(); 6
} 6
1.2 Стандартные функции работы со строками 6
В библиотеке <stdio.h>также определен целый ряд функций, проверяющих принадлежность символа какому-либо множеству, например множеству букв (isalfa), разделителей (isspace), знаков пунктуации (ispunct), цифр (isdigit) и т. д. (см. Приложение Б). 8
1.3 Чтение символьных строк из потока ввода 8
1.3.1 С помощью оператора ">>" 8
1.3.2 С помощью функции getline() 8
2. Содержание работы 9
cout << "Введите слово"; 9
cin>>s; 9
cout << "Введите слово"; 10
cin>>s[i]; 10
3. Требования к отчету 10
4. Контрольные вопросы 10
11
Приложение Б 12
Стандартные функции работы со строками 12
Приложение В Задания для самостоятельного выполнения на строки 13
Приложение Г Задания для самостоятельного выполнения на массивы строк 14
Цель работы
Изучить работу со строками в языке С++:
понятие строковых переменных и их формы представления;
процедуры и функции обработки строковых переменных;
преобразование строковых переменных в цифровую форму и наоборот.
1. Общие положения
1.1 Описание символьных и строковых переменных
Переменные символьного типа имеют тип char. Он обычно используют для хранения символа. Символы в компьютере хранятся в виде целых чисел, которые представляют собой код из таблицы символов ASCII. При выводе на экран символьных переменных и констант компьютер выводит соответствующий коду символ. Присваивать переменной типа char значения можно следующим образом:
char s;
s='a';
s=32;
s='\b'
В первом примере переменной s стала равной коду латинской буквы a. Как видите не обязательно запоминать таблицу кодов символов, а достаточно написать символ в одиночных кавычках.
Во втором примере переменной s присвоили код символа пробел 32.
В третьем примере присвоили переменой s Esc-последовательность представляющей собой пробел.
В диапазон типа char входят числа от -128 до 127, коды русских букв имеют код больше 127 (см. приложение А), для решения этой проблемы используйте тип unsigned char.
В языке С++ нет стандартного типа для работы со строками. для этих целей используется массив символов:
unsigned char s[10]="Привет";
Символьные строки описываются как обычные массивы:
char phrase[17];
При использовании массива символов в качестве строки необходимо помнить, что концом строки считается символ '\0' (т.е. 0). Все стандартные функции корректно вставляют 0 в конец строки, но если вы будите, что либо менять, не забывайте ставить "\0" в конце строки.
Массивы можно полностью или частично проинициализировать непосредственно в операторе описания. Список значений элементов массива заключается в фигурные скобки "{}". Например, оператор
char phrase[17] = { 'В','в','е','д','и','т','е',' ','в','о','з','р','а','с','т',':', '\0' };
одновременно и объявляет массив "phrase", и присваивает его элементам значения. То же самое делает оператор:
char phrase[17] = "Введите возраст:";
Если не указывать размер "17", то размер массива будет выбран в соответсвии с количеством инициализирующих значений (с учетом завершающего нуль-символа). Т.е. строку можно описать с помощью любого из двух следующих операторов:
char phrase[] = { 'В','в','е','д','и','т','е',' ','в','о','з','р','а','с','т',':', '\0' };
char phrase[] = "Введите возраст:";
Очень важно запомнить, что символьные строки хранятся в виде массивов. Поэтому их нельзя приравнивать и сравнивать с помощью операций "=" и "==". Например, нельзя записать оператор присваивания:
phrase = "Вы напечатали строку:";
Для копирования и сравнения строк следует применять специальные библиотечные функции.
Если требуется ввести строку, состоящую из нескольких слов, в одну строковую переменную, используются методы getline или get класса iostream. Синтаксис вызова метода — после имени объекта ставится точка, а затем пишется имя метода:
#include <iostream.h>
#include <conio.h>
int main(){
const int n = 80;
char s[n];
cin.getline(s, n); cout << s << endl;
cin.get(s, n); cout << s << endl;
return 0;
}
Метод getline считывает из входного потока n - 1 символов или менее (если символ перевода строки встретится раньше) и записывает их в строковую переменную s. Символ перевода строки также считывается (удаляется) из входного потока, но не записывается в строковую переменную, вместо него размещается завершающий 0. Если в строке исходных данных более п - 1 символов, следующий ввод будет выполняться из той же строки, начиная с первого несчитанного символа.
Метод get работает аналогично, но оставляет в потоке символ перевода строки. В строковую переменную добавляется завершающий 0.
Пример. Задан список из 7 слов. Определить, сколько слов списка начинаются на букву D.
#include <iostream.h>
#include <conio.h>
int main(){
char s[20];
int k=0;
int i;
for(i=1;i<=7;i++){
cout << "Введите слово";
cin>>s;
if (s[0]=='D' || s[0]=='d') k=k+1;
}
cout << k;
getch();
}