Меню
Разработки
Разработки  /  Информатика  /  Разное  /  10 класс  /  Символы и строки в языках Pascal и C++.

Символы и строки в языках Pascal и C++.

17.05.2020

Содержимое разработки

Для подключения русского языка в консоли С++ :

мы будем использовать функцию setlocale() внутри функции main()

#include

using namespace std;

int main()

{

setlocale(LC_ALL, "Russian");

cout endl;

return 0;

}

Также, можно опустить последний аргумент функции — setlocale(LC_ALL, "Russian"); можно заменить на setlocale(0, ""); — работоспособность программы от этого не изменится.

Функция setlocale() работает только на вывод.

Тут очень важно понимать одну вещь - в языке С++ НЕТ проблем с русским языком (кирилицей), проблема есть в винде, которая до сих пор использует CP886 (по дефолту) в консоли.

#include

 

int main()

{

  SetConsoleCP(1251);

  SetConsoleOutputCP(1251);

  ...

}



Или же setlocale (LC_ALL, "Russian_Russia.866"); (проблемы с выводом символов)



Символы

В языке C++ для хранения однобайтового символа используется тип данных char. Переменную типа char можно рассматривать двояко: как целое число, занимающее 1 байт и способное принимать значения от -128 до 127 (тип signed char, есть также беззнаковая модификация unsigned char, принимающая значения от 0 до 255) и как один символ текста.

В языке Pascal тип данных char рассматривается только как один символ текста. В зависимости от компилятора тип данных char может содержать как 256 символов (FreePascal) так и 65536 (PascalABC.NET кодировка Unicode).

В таблице ASCII представлены символы и их целочисленные значения (0 – 255). Базовая часть 0 – 127 одинаковая для всех кодировок, содержит цифры, знаки пунктуации, символы английского алфавита. Расширенная (128 – 255) – отличается, содержит символы национальных алфавитов (для русского языка – кириллица).

Символ в памяти занимает один байт (или же 2 байта для Unicode).



Объявление символьной переменной


Pascal

С++

ch: char;


где char – тип данных для хранения символов, ch – имя переменной типа char

char ch;


где char – тип данных для хранения символов, ch – имя переменной типа char


Получение кода символа из таблицы ASCII и символа по коду


Pascal

С++

Ord(‘A’);

Функция возвращает число(код символа в таблице).

Примечание: в PascalABC.NET символы представлены в кодировки Unicode.

Коды символов совпадают только в базовой части (0 – 127). Коды русских символов отличаются.


Chr(65);

Функция возвращает символ по его коду в таблице ASCII.


Пример:

Var

ch: char;

n: integer;

Begin

n := ord(‘A’);

ch := chr(65);

write(ch, ‘ ‘,N)

End.

В результате, на экране мы получим символ и его код:

А 65


int x = char ();

Происходит преобразование типов char в int. В целочисленную переменную х записывается код символа.

Базовая часть таблицы ASCII одинаковая для всех кодировок. В С++ расширенная часть отличается от аналогичной кодировки в Pascal.


char ch = char();

Происходит преобразование типов int в char. В символьную переменную ch записывается символ по его коду.


Пример:

#include

using namespace std;

int main(){

char ch = char(65);

int x = char ('A');

cout

return 0;

}

Работа с русскими символами в С++ несколько отличается:

cout

результат получим -64, хотя код заглавной русской буквы ‘А’ – 192.

Для правильного получения кода необходимо воспользоваться:

unsigned char x = 'А';


Пример:

#include

using namespace std;

int main(){

setlocale (0, "");

char ch = char(192);

unsigned char x = 'А';

cout

return 0;

}

В результате, на экране мы получим символ и его код:

А 192

Переменным типа char можно и явно присваивать числовые значения. Например, можно сделать так:

#include

using namespace std;

int main()

{

unsigned char c = 'A';

cout

c = 126;

cout

return 0;

}

Эта программа выведет две строки: “A 65” и “~ 126”, то есть символы с ASCII-кодами 65 (A) и 126 (~) и сами ASCII-коды.






Функции изменения регистра символов

Pascal

C++

UPCASE(символ)

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

Пример:

ch := 'б';

ch := upcase(ch);

В переменную ch будет записана большая буква «Б».

Необходимо подключение библиотеки

#include     


int toupper( int character );

Функция возвращает символ в верхнем регистре. В параметр функции можно записать как символ, так и число (код таблицы ASCII)

Пример:

ch = toupper('a');

ch = toupper(97);

В обоих случаях в результате в переменную ch будет записана большая английская буква «А».

Не работает с кириллицей.


int tolower ( int c );

Функция возвращает символ в нижнем регистре. В параметр функции можно записать как символ, так и число (код таблицы ASCII.


Остальные преобразования можно выполнить также с помощью функций библиотеки cctype.


Пример 1.

С клавиатуры вводится символ. Получить символ, стоящий в таблице ASCII следующим по порядку


Pascal

C++

var

ch: char;

begin

read(ch);

ch := chr(ord(ch) + 1);

write(ch)

end.

#include

using namespace std;

int main(){

char ch;

cin ch;

ch = ch + 1;

cout

return 0;

}



Пример 2.

С клавиатуры вводится символ. Выяснить является ли этот символ строчной английской буквой.

Pascal

C++

var

ch: char;

begin

read(ch);

if (ch = 'a') and (ch 'z') then write('YES')

else write('NO');

end.

Вариант 1. Воспользоваться функцией из библиотеки cctype.

#include

#include

using namespace std;

int main(){

char ch;

cin ch;

cout

return 0;

}

Вариант 2. Сравнить символы.

#include

using namespace std;

int main(){

char ch;

cin ch;

if (ch = 'a' && ch

else cout

return 0;

}







Строки

Текстовая строка - это последовательность символов. Символы в строке пронумерованы.

Pascal

С++

Нумерация начинается с 1. В случае попытки обратиться к номеру, превосходящему длину строки, выдается ошибка.

Строка, так же как и символ, заключается в одинарные кавычки.

Нумерация начинается с 0. При обращении к несуществующему элементу строки ошибки не выдается.


Строка заключается в двойные кавычки. Признаком конца строки является нулевой символ \0.

В C++ строки можно описать с помощью массива символов (массив элементов типа char), в котором следует предусмотреть место для хранения признака конца строки.



В языке C - строкой считался массив символов, а для обозначения конца строки использовался символ с ASCII-кодом 0, что позволяло хранить строки переменной длины (то есть в массиве char[n] можно было хранить строки любой длины, не превосходящей n-1. Такой способ хранения строк порождал ряд неудобств: любая строка была ограничена по длине размером массива, а чтобы вычислить длину строки необходимо было пройти по всей строке до появления нулевого символа, то есть определение длины строки требует количество операций, пропорциональное этой длине.

В языке C++ для представления строк существует более совершенный тип данных string, в основе которого лежит такой же массив символов, завершающийся нулевым символом, но содержащий еще ряд дополнительных возможностей. Для работы со строками языка C++ необходимо в начале программы подключить описание типа string, которое находится в одноименном файле:

#include cstring



Объявление строки

Pascal

C++

st: string;

Объявляется строка без указания длины.

st1: string[10];

Максимально возможная длина строки 10 символов. Если вводимая строка имеет большую длину – остальные символы отбрасываются.

Строке можно присвоить значение:

St := ‘qwerty’;

string st;

Строке можно присвоить значение:

St = “qwerty”;



Обращение к отдельному символу строки. К символу стоки можно обратиться так же как и к элементу массива – имя_строки[индекс символа]. Вывод символа w из строки “qwerty”.

Pascal

C++

st := ‘qwerty’;

write(st[2]);

St = “qwerty”;

Cout





Ввод и вывод строки

Pascal

C++

Если вводится одна строка, возможно использовать оператор read();

Однако рекомендуется использовать оператор readln().

Пример:

Readln(st);


Для вывода строк используется стандартный оператор вывода write():

write(st);

В С++ существует несколько операторов ввода строк.

Cin st;

Ввод осуществляется до первого пробела. Остальной ввод игнорируется.

getline(cin, st);

Ввод строки целиком вместе с пробелами.


Для вывода строк используется стандартный оператор вывода cout:

cout



Получение длины строки

Pascal

C++

Функция length() возвращает длину строки

st := ‘qwerty’;

write(length(st));

В результате получим число 6

Методы size и length класса string возвращают длину строки:

St = “qwerty”;

cout

cout st.size();

Результат в обоих случаях будет 6. Оба метода работают анаогично.



Пример.

Дана строка. Выведите символы строки в столбик.

Pascal

C++

var

st: string;

i: integer;

begin

readln(st);

for i := 1 to length(st) do

writeln(st[i]);

end.

#include

#include

using namespace std;

int main(){

string st;

getline(cin, st);

for (int i = 0; i

cout

return 0;

}



Объединение (конкатенация) строк.

Например, при сложении строк "Hello, " и "world!" получится строка "Hello, world!".

Pascal

C++

var

st, st2: string;

begin

st := 'Hello, ';

st2 := 'world!';

st := st + st2;

write(st);

end.

#include

#include

using namespace std;

int main(){

string st = "Hello, ", st2 = "world!";

st = st + st2;

cout

return 0;

}

Пример.

Дана строка. Запишите в другую строку только заглавные буквы английского алфавита, встречающиеся в строке.

Строка, в которую будет происходить запись, должна быть инициализирована!

Pascal

C++

var

st, st_new: string;

i: integer;

begin

st_new := '';

readln(st);

for i := 1 to length(st) do

if (st[i] = 'A') and (st[i] 'Z') then

st_new := st_new + st[i];

write(st_new);

end.

#include

#include

using namespace std;

int main(){

string st, st_new = "";

getline(cin, st);

for (int i = 0; i

if (st[i] = 'A' && st[i]

st_new += st[i];

cout

return 0;

}



Удаление символа (подстроки) из строки

Pascal

C++

Удаление подстроки выполняет функция

Delete(st, n, k)

st – имя строки из которой удаляем

n – индекс символа, с которого удаляет

k – сколько символов удаляем


var

st: string;


begin

readln(st);

Delete(st,3,4);

write(st);

end.

Удаление подстроки выполняет метод

st.erase(n,k);

удаляет из строки st, начиная с позиции n, фрагмент, состоящий из k символов.

Элемент с индексом 0 – стоит на 1 позиции.


#include

#include

using namespace std;

int main(){

string st;

getline(cin, st);

st.erase(3,4);

cout

return 0;

}



Вставка подстроки в строку

Pascal

C++

Функция INSЕRT (st1,st,k) – позволяет в строку str перед k позицией вставить строку st1.

Метод st.insert(k,str1); – позволяет в строку st, начиная c k позиции, вставить строку st1.





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

Pascal

C++

VAL(st, x,er)

Процедура преобразует численное выражение X в его строковое представление и помещает результат в st. er – переменная, в которую записывается значение ошибки – 0, если ошибки не было, 1 – если в процедуру вместе с цифрами были поданы другие символы (FreePascal возвращает номер ошибочного символа).


Функция stoi()

n = stoi(str);

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




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

Pascal

C++

Процедура STR(X, st)

Преобразовывает число х в строку st

Функция to_string()

str = to_string(n)

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




Нахождение подстроки в строке

Pascal

C++

Функция POS (st1,st);

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

var

st: string;

x: integer;

begin

readln(st);

x := pos('a', st);

write(st);

end.

В результате получим номер первого вхождения символа а в строку st.

Метод st.find ()

n=st.find (st1);– поиск определенного фрагмента st1 в строке st (возвращает индекс символа, с которой этот фрагмент начинается)

#include

#include

using namespace std;

int main(){

string st;

int n;

getline(cin, st);

n = st.find('a');

cout

return 0;

}

В результате получим индекс первого вхождения символа а в строку st



Копирование подстроки в строку

Pascal

C++

COPY(st,n,k)

Функция позволяет копировать фрагмент некоторой строки из одной переменной в другую.

st – имя строки, из которой должен извлекаться копируемый фрагмент;

n – позиция в строке, начиная с которого будет копироваться фрагмент;

k – число копируемых символов.

Substr(n, k)

Метод, возвращающий подстроку с n символа длиной k.

Пример:

St_new = st.substr(0, 5)




-75%
Курсы повышения квалификации

Информационная культура и образование

Продолжительность 72 часа
Документ: Удостоверение о повышении квалификации
4000 руб.
1000 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Символы и строки в языках Pascal и C++. (31.57 KB)

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт