ݺߣ

ݺߣShare a Scribd company logo
Типы символов и строкТипы символов и строк
Символьные типыСимвольные типы
 предназначены для хранения одного символа
 относятся к целым порядковым типам
 в C++Builder используются:
символы ANSI
(1 байт, char, псевдонимы: AnsiChar и CHAR)
символы Юникод
(2 байта, Char , псевдонимы: WideChar и wchar_t)
 Первые 256 символов совпадают
 С символьными переменными можно обращаться
как с целыми и как с символами, все зависит от
контекста
Например:Например:
char ch = 'Б';
Label1->Caption = ch; //вывод в метку Б
Label1->Caption = (unsigned char)ch; //вывод в метку 193
Label1->Caption = (char)(ch + 1); //вывод в метку В
for (int i = 1; i < 256; i++)
RichEdit1->Lines->Add(IntToStr(i)+' '+(char)i);
//вывод в поле строк вида "193 Б" для всех символов
 В C++Builder 2009 осуществлен переход на символы
и строки Юникод:
Label1->Caption = AnsiString((char)ch);
Label1->Caption = AnsiString((char)(ch + 1));
RichEdit1->Lines->Add(IntToStr(i)+' '+
AnsiString((char)i));
Массивы символовМассивы символов
 В классическом C++ отсутствует специальный тип
строк
 Строки – массивы символов, оканчивающиеся
нулевым символом ('0')
 Строка доступна через указатель на первый символ
в строке
 Строка может быть объявлена либо как массив
символов, либо как переменная типа char*:
char S[ ] = "строка"; S – массив из 7 элементов
char *Sp = "строка"; Sp – указатель на строку
char buff [100]; buff – строка заданной длины (99)
 Доступ к отдельным символам строки
выполняется по индексам, начинающимся с нуля
 S[0] и Sp[0] — первые символы объявленных выше
строк, S[1] и Sp[1] — вторые и т.д.
Функции обработки строкФункции обработки строк
 strcat — конкатенация (склеивание) двух строк
 strcmp — сравнение двух строк
 strcpy — копирование одной строки в другую
 strstr — поиск в строке заданной подстроки
 strlen — определение длины строки
 strupr — преобразование символов строки к
верхнему регистру
 sprintf — построение строки по заданной строке
форматирования и списку аргументов
 …
strcpy(buff, "Текст, копируемый в buff");
char S1[20] = "текст 1", S2[10] = "текст 2";
strcat(S1,S2); //результат склеивания в S1
char *S1 = "текст 1", *S2 = "текст 2", S[20];
strcat(strcat(strcat(S,S1)," "),S2); //результат в S
Контекстная замена в S1 текста S2 на текст S3Контекстная замена в S1 текста S2 на текст S3
char S1[20], S2[20], S3[20], S[60], *St;
// операторы занесения текста в S1, S2, S3
...
St = strstr (S1,S2);
if(St)
{
*St = 0;
St += strlen (S2);
Label1->Caption = strcat(strcat(strcpy(S,S1),S3),St);
}
else Label1->Caption = "Текст не найден";
Тип строк AnsiStringТип строк AnsiString
 реализован как класс, объявленный в файле
vcl/dstring.h
String S;
AnsiString S;
 это строки с нулевым символом в конце
 при объявлении инициализируются пустыми
строками
 определены операции отношения ==, !=, >, <, >=, <=.
 сравнение производится с учетом регистра
 определены операции присваивания =, += и
операция склеивания строк (конкатенации) +
 определена операция индексации [ ]
 индексы начинаются с 1
 Например: если S1 = "Привет",
то S1[1] вернет 'П', S1[2] вернет 'р' и т.д.
Примеры использования методов классаПримеры использования методов класса
AnsiStringAnsiString
Label1->Caption = Edit1->Text + ' ' + Edit2->Text;
конкатенация строк
Контекстная замена в S1 текста S2 на текст S3Контекстная замена в S1 текста S2 на текст S3
AnsiString S1, S2, S3;
// операторы занесения текста в S1, S2, S3
...
int i = S1.Pos(S2);
if (i)
Label1->Caption = S1.SubString(1,i-1) + S3 +
S1.SubString (i+S2.Length(),255);
else Label1->Caption = "Текст не найден";
Замена в строке S1 всех вхождений S2 наЗамена в строке S1 всех вхождений S2 на
строку S3строку S3
Способ 1
int i0 = 0, i = S1.Pos(S2);
while(i)
{
S1 = S1.SubString(1,i + i0 - 1) + S3 +
S1.SubString(i + i0 + S2.Length(),255);
i0 += i - 1 + S3.Length();
i = S1.SubString(i0 + 1, 255).Pos(S2);
}
Способ 2
int i0 = 1, i = S1.Pos(S2);
while(i > i0)
{
S1.Delete(i,S2.Length()); // удаление вхождения S2
S1.Insert(S3,i); // вставка S3
i0 = i + S3.Length();
i = i0 - 1 + S1.SubString(i0, 255).Pos(S2);
}
ПреобразованиеПреобразование
строки AnsiString в строку (char *)строки AnsiString в строку (char *)
 осуществляется функцией c_str() без параметров
 Например :
S1.c_str(); S2.c_str(),
преобразование строк S1 и S2
ПреобразованиеПреобразование
строки (char *) в строку AnsiStringстроки (char *) в строку AnsiString
 функция AnsiString (char *S)

More Related Content

Viewers also liked (9)

HCSC Presentation JAN 2015
HCSC Presentation JAN 2015HCSC Presentation JAN 2015
HCSC Presentation JAN 2015
Daniel Dickinson
Teach a child – Save a dog
Teach a child – Save a dogTeach a child – Save a dog
Teach a child – Save a dog
Clara Correia
Future contiunous tense presentasi
Future contiunous tense presentasiFuture contiunous tense presentasi
Future contiunous tense presentasi
arisusilaningtyas03
Ari susilaningtyas (21314002) makalah bahasa indonesia
Ari susilaningtyas (21314002) makalah bahasa indonesiaAri susilaningtyas (21314002) makalah bahasa indonesia
Ari susilaningtyas (21314002) makalah bahasa indonesia
arisusilaningtyas03
Dr. Martin Luther King- final draft
Dr. Martin Luther King- final draftDr. Martin Luther King- final draft
Dr. Martin Luther King- final draft
Anh Vu
Bart resume 11614
Bart resume 11614Bart resume 11614
Bart resume 11614
Bart Kulesz
Ciarko Design Katalog 2013/2014
Ciarko Design Katalog 2013/2014Ciarko Design Katalog 2013/2014
Ciarko Design Katalog 2013/2014
CIARKO Sp. z o.o. S.K.A
laporan observasi home industri telur
 laporan observasi home industri telur laporan observasi home industri telur
laporan observasi home industri telur
arisusilaningtyas03
Naval Systems
Naval SystemsNaval Systems
Naval Systems
Alessandro Camera, PMP®

Similar to символы и строки (11)

C++ Базовый. Занятие 12.
C++ Базовый. Занятие 12.C++ Базовый. Занятие 12.
C++ Базовый. Занятие 12.
Igor Shkulipa
Лекция 4. Строки, байты, файлы и ввод/вывод.
 Лекция 4. Строки, байты, файлы и ввод/вывод. Лекция 4. Строки, байты, файлы и ввод/вывод.
Лекция 4. Строки, байты, файлы и ввод/вывод.
Roman Brovko
Функции в языках программирования
Функции в языках программированияФункции в языках программирования
Функции в языках программирования
kvlar
Classes: Number, String, StringBuffer, StringBuilder
Classes: Number, String, StringBuffer, StringBuilderClasses: Number, String, StringBuffer, StringBuilder
Classes: Number, String, StringBuffer, StringBuilder
Alexey Bovanenko
Cpp/cli particularities
Cpp/cli particularitiesCpp/cli particularities
Cpp/cli particularities
mcroitor
Step cpp0201
Step cpp0201Step cpp0201
Step cpp0201
Evgenij Laktionov
Процедуры и функции для работы со строками
Процедуры и функции для работы со строкамиПроцедуры и функции для работы со строками
Процедуры и функции для работы со строками
Daria Romanova
C++ Базовый. Занятие 12.
C++ Базовый. Занятие 12.C++ Базовый. Занятие 12.
C++ Базовый. Занятие 12.
Igor Shkulipa
Лекция 4. Строки, байты, файлы и ввод/вывод.
 Лекция 4. Строки, байты, файлы и ввод/вывод. Лекция 4. Строки, байты, файлы и ввод/вывод.
Лекция 4. Строки, байты, файлы и ввод/вывод.
Roman Brovko
Функции в языках программирования
Функции в языках программированияФункции в языках программирования
Функции в языках программирования
kvlar
Classes: Number, String, StringBuffer, StringBuilder
Classes: Number, String, StringBuffer, StringBuilderClasses: Number, String, StringBuffer, StringBuilder
Classes: Number, String, StringBuffer, StringBuilder
Alexey Bovanenko
Cpp/cli particularities
Cpp/cli particularitiesCpp/cli particularities
Cpp/cli particularities
mcroitor
Процедуры и функции для работы со строками
Процедуры и функции для работы со строкамиПроцедуры и функции для работы со строками
Процедуры и функции для работы со строками
Daria Romanova

символы и строки

  • 1. Типы символов и строкТипы символов и строк
  • 2. Символьные типыСимвольные типы  предназначены для хранения одного символа  относятся к целым порядковым типам  в C++Builder используются: символы ANSI (1 байт, char, псевдонимы: AnsiChar и CHAR) символы Юникод (2 байта, Char , псевдонимы: WideChar и wchar_t)  Первые 256 символов совпадают
  • 3.  С символьными переменными можно обращаться как с целыми и как с символами, все зависит от контекста
  • 4. Например:Например: char ch = 'Б'; Label1->Caption = ch; //вывод в метку Б Label1->Caption = (unsigned char)ch; //вывод в метку 193 Label1->Caption = (char)(ch + 1); //вывод в метку В for (int i = 1; i < 256; i++) RichEdit1->Lines->Add(IntToStr(i)+' '+(char)i); //вывод в поле строк вида "193 Б" для всех символов
  • 5.  В C++Builder 2009 осуществлен переход на символы и строки Юникод: Label1->Caption = AnsiString((char)ch); Label1->Caption = AnsiString((char)(ch + 1)); RichEdit1->Lines->Add(IntToStr(i)+' '+ AnsiString((char)i));
  • 6. Массивы символовМассивы символов  В классическом C++ отсутствует специальный тип строк  Строки – массивы символов, оканчивающиеся нулевым символом ('0')  Строка доступна через указатель на первый символ в строке
  • 7.  Строка может быть объявлена либо как массив символов, либо как переменная типа char*: char S[ ] = "строка"; S – массив из 7 элементов char *Sp = "строка"; Sp – указатель на строку char buff [100]; buff – строка заданной длины (99)  Доступ к отдельным символам строки выполняется по индексам, начинающимся с нуля  S[0] и Sp[0] — первые символы объявленных выше строк, S[1] и Sp[1] — вторые и т.д.
  • 8. Функции обработки строкФункции обработки строк  strcat — конкатенация (склеивание) двух строк  strcmp — сравнение двух строк  strcpy — копирование одной строки в другую  strstr — поиск в строке заданной подстроки  strlen — определение длины строки  strupr — преобразование символов строки к верхнему регистру  sprintf — построение строки по заданной строке форматирования и списку аргументов  …
  • 9. strcpy(buff, "Текст, копируемый в buff"); char S1[20] = "текст 1", S2[10] = "текст 2"; strcat(S1,S2); //результат склеивания в S1 char *S1 = "текст 1", *S2 = "текст 2", S[20]; strcat(strcat(strcat(S,S1)," "),S2); //результат в S
  • 10. Контекстная замена в S1 текста S2 на текст S3Контекстная замена в S1 текста S2 на текст S3 char S1[20], S2[20], S3[20], S[60], *St; // операторы занесения текста в S1, S2, S3 ... St = strstr (S1,S2); if(St) { *St = 0; St += strlen (S2); Label1->Caption = strcat(strcat(strcpy(S,S1),S3),St); } else Label1->Caption = "Текст не найден";
  • 11. Тип строк AnsiStringТип строк AnsiString  реализован как класс, объявленный в файле vcl/dstring.h String S; AnsiString S;  это строки с нулевым символом в конце  при объявлении инициализируются пустыми строками  определены операции отношения ==, !=, >, <, >=, <=.  сравнение производится с учетом регистра
  • 12.  определены операции присваивания =, += и операция склеивания строк (конкатенации) +  определена операция индексации [ ]  индексы начинаются с 1  Например: если S1 = "Привет", то S1[1] вернет 'П', S1[2] вернет 'р' и т.д.
  • 13. Примеры использования методов классаПримеры использования методов класса AnsiStringAnsiString Label1->Caption = Edit1->Text + ' ' + Edit2->Text; конкатенация строк
  • 14. Контекстная замена в S1 текста S2 на текст S3Контекстная замена в S1 текста S2 на текст S3 AnsiString S1, S2, S3; // операторы занесения текста в S1, S2, S3 ... int i = S1.Pos(S2); if (i) Label1->Caption = S1.SubString(1,i-1) + S3 + S1.SubString (i+S2.Length(),255); else Label1->Caption = "Текст не найден";
  • 15. Замена в строке S1 всех вхождений S2 наЗамена в строке S1 всех вхождений S2 на строку S3строку S3 Способ 1 int i0 = 0, i = S1.Pos(S2); while(i) { S1 = S1.SubString(1,i + i0 - 1) + S3 + S1.SubString(i + i0 + S2.Length(),255); i0 += i - 1 + S3.Length(); i = S1.SubString(i0 + 1, 255).Pos(S2); }
  • 16. Способ 2 int i0 = 1, i = S1.Pos(S2); while(i > i0) { S1.Delete(i,S2.Length()); // удаление вхождения S2 S1.Insert(S3,i); // вставка S3 i0 = i + S3.Length(); i = i0 - 1 + S1.SubString(i0, 255).Pos(S2); }
  • 17. ПреобразованиеПреобразование строки AnsiString в строку (char *)строки AnsiString в строку (char *)  осуществляется функцией c_str() без параметров  Например : S1.c_str(); S2.c_str(), преобразование строк S1 и S2
  • 18. ПреобразованиеПреобразование строки (char *) в строку AnsiStringстроки (char *) в строку AnsiString  функция AnsiString (char *S)