Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Пример. Строки и потоки ввода/вывода в С++BUILDER




Строки и потоки ввода/вывода в С++BUILDER

3.1. Строки

В C++ Builder можно использовать следующие текстовые строки: символьные массивы типа char* языка С с нуль-символом (‘\0’) в конце; класс string из стандартной библиотеки C++; класс String (другое название AnsiString) из библиотеки VCL.

Символьные массивы. В языке С строки представляют собой массив данных символьного типа, заканчивающийся символом ‘\0’. Для работы со строками в стандартную библиотеку языка С включен ряд функций, которые определены в заголовочном файле <string.h>. Например:

strcpy() – копирование одной строки в другую;

strcat() – добавление одной строки в конец другой;

strcmp() – сравнение двух строк в лексикографическом порядке;

strstr() – поиск в строке заданной подстроки;

strupr() – преобразование символов строки к верхнему регистру;

strlen() – определение длины строки без учета нуль-символа.

Использование символьных массивов часто оказывается самым удобным при разработке приложений.

Класс string языка C++. Класс string (название начинается со строчной буквы) представляет собой динамический массив и дает преимущества при выполнении операций соединения и обрезания строк, вычеркивания части строки, поиска комбинаций символов. Данный класс определен в заголовочном файле <cstring.h>.

Класс string содержит несколько конструкторов, из которых приведем объявления следующих:

1) string();

2) string(const string &s);

3) string(const char *cp);

4) string(const char *cp, size_t n);

5) string(const string &s, size_type start, size_type length);

6) string(size_type n, char c);

Первый конструктор создает пустую строку. Второй конструктор является конструктором копирования. Третий конструктор создает строку, инициализированную С-строкой (нуль-символ в объект класса string не копируется). Четвертый конструктор создает строку, инициализированную не более чем n первыми символами С-строки. Пятый конструктор создает строку из другой строки, начиная с индекса start и содержащую не более чем length символов. Шестой конструктор создает строку, содержащую n символов c.

 

#include <iostream.h>

#include <string.h>

using namespace std;

void main(){

// Создание пустой строки и ее вывод

string str1;

cout<<”str1: “<<str1<<endl;

// Строка инициализируется С-строкой

string str2(“My string”);

cout<<”str2: “<<str2<<endl;

// Используется конструктор string(const char *cp, size_t n)

string str3(“Tekct”,4);

cout<<”str3: “<<str3<<endl; // Выводится “Tekc”

// Используется конструктор копирования

string str4(str3);

cout<<”str4: “<<str4<<endl; // Выводится “Tekc”

// Используется конструктор string(const string &s, size_type start,

// size_type length)

string str5(str3, 2, 2);

cout<<”str5: “<<str5<<endl; // Выводится “kc”

// Используется конструктор string(size_type n, char c)

string str7(5, ‘A’);

cout<<”str7: “<<str7<<endl; // Выводится “AAAAA”

}

 

Для объектов класса string перегружены следующие операции (операторы):

= – присваивание. Данная операция (как и другие рассматриваемые ниже операции) перегружена с помощью нескольких функций-операторов, что позволяет выполнять присваивание строке класса string не только строку этого же класса, но и С-строку или символ.

+ – конкатенация строк.

== – проверка строк на равенство.

!= – проверка строк на неравенство.

< – меньше. Здесь и далее сравнение строк выполняется в лексикографическом порядке.

<= – меньше или равно.

> – больше.

>= – больше или равно.

[] – индексация. Обеспечивает доступ к элементам строки по индексу. Контроль выхода за пределы строки не выполняется. Отметим, что имеется метод at(int i), который также позволяет обеспечить доступ к символам строки, но он выбрасывает исключение out_of_range, если индекс i выходит за пределы строки. Индексация символов строки ведется с нуля.

+= – добавление к строке с изменением исходной строки.

<< – вывод строки.

>> – ввод строки.

Для сравнения строк класс string содержит также несколько перегруженных версий метода compare(), выполняющего сравнение строк в лексикографическом порядке:

1) int compare(const string &str) const;

2) int compare(size_t pos, size_t n, const string &str) const;

3) int compare(size_t pos1, size_t n1, const string &str, size_t pos2,size_t n2) const;

4) int compare(const const char *str) const;

5) int compare(size_t pos, size_t n, const char *str, size_t length) const;

Здесь size_t является беззнаковым целочисленным типом, определенным в заголовочном файле <stdio.h>:

typedef unsigned size_t;

Метод возвращает отрицательное значение, если вызывающая строка предшествует строке, с которой выполняется сравнение; 0 – если строки совпадают; положительное значение – если вызывающая строка следует за другой строкой, участвующей в сравнении.

Версия 2) метода сравнивает строку str с n символами вызывающей строки, начиная с позиции pos. Если значение параметра n выходит за пределы вызывающей строки, то строка рассматривается от позиции pos до ее конца. Если позиция pos выходит за пределы вызывающей строки, то выбрасывается исключение out_of_range.

Версия 3) позволяет выполнить сравнение подстроки вызывающей строки (характеризуется параметрами pos1 – индекс первого элемента строки и n1 – длина подстроки) с подстрокой строки str (характеризуется аналогичными параметрами pos2 и n2). Если значения pos1 или pos2 выходят за пределы соответствующих строк, то выбрасывается исключение out_of_range.

Версии 4) и 5) предназначены для сравнения вызывающей строки или ее подстроки (характеризуется параметрами pos и n) с С-строкой или ее начальной подстрокой, содержащей length символов.




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 1383; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.