Читаем Язык программирования C++. Пятое издание полностью

Инициализатор строки s8string(10, 'c') — создает строку заданного размера, заполненную указанным символьным значением, а затем копирует ее в строку s8. Это эквивалентно следующему коду:

string temp(10, 'c'); // temp - сссссссссс

string s8 = temp;     // копировать temp в s8

Хотя используемый для инициализации строки s8 код вполне допустим, он менее читабелен и не имеет никаких преимуществ перед способом, которым была инициализирована переменная s7.

<p><image l:href="#reader.png"/>3.2.2. Операции со строками</p>

Наряду с определением способов создания и инициализации объектов класс определяет также операции, которые можно выполнять с объектами класса. Класс может определить обладающие именем операции, такие как функция isbn() класса Sales_item (см. раздел 1.5.2). Класс также может определить то, что означают различные символы операторов, такие как << или +, когда они применяются к объектам класса. Наиболее распространенные операции класса string приведены в табл. 3.2.

Таблица 3.2. Операции класса string

os << sВыводит строку s в поток вывода os. Возвращает поток os
is >> sЧитает разделенную пробелами строку s из потока is. Возвращает поток is
getline(is, s)Читает строку ввода из потока is в переменную s. Возвращает поток is
s.empty()Возвращает значение true, если строка s пуста. В противном случае возвращает значение false
s.size()Возвращает количество символов в строке s
s[n]Возвращает ссылку на символ в позиции n строки s; позиции отсчитываются от 0
s1 + s2Возвращает строку, состоящую из содержимого строк s1 и s2
s1 = s2Заменяет символы строки s1 копией содержимого строки s2
s1 == s2 s1 != s2Строки s1 и s2 равны, если содержат одинаковые символы. Регистр символов учитывается
<, <=, >, >=Сравнение зависит от регистра и полагается на алфавитный порядок символов
Чтение и запись строк

Как уже упоминалось в главе 1, для чтения и записи значений встроенных типов, таких как int, double и т.д., используется библиотека iostream. Для чтения и записи строк используются те же операторы ввода и вывода.

// Обратите внимание: перед компиляцией этот код следует дополнить

// директивами #include и объявлениями using

int main() {

 string s;          // пустая строка

 cin >> s;          // чтение разделяемой пробелами строки в s

 cout << s << endl; // запись s в поток вывода

 return 0;

}

Программа начинается с определения пустой строки по имени s. Следующая строка читает данные со стандартного устройства ввода и сохраняет их в переменной s. Оператор ввода строк читает и отбрасывает все предваряющие непечатаемые символы (например, пробелы, символы новой строки и табуляции). Затем он читает значащие символы, пока не встретится следующий непечатаемый символ.

Таким образом, если ввести " Hello World! " (обратите внимание на предваряющие и завершающие пробелы), фактически будет получено значение "Hello" без пробелов.

Подобно операторам ввода и вывода встроенных типов, операторы строк возвращают как результат свой левый операнд. Таким образом, операторы чтения или записи можно объединять в цепочки.

string s1, s2;

cin >> s1 >> s2; // сначала прочитать в переменную s1,

                 // а затем в переменную s2

cout << s1 << s2 << endl; // отобразить обе строки

Если в этой версии программы осуществить предыдущий ввод, " Hello World! ", выводом будет "HelloWorld!".

Чтение неопределенного количества строк

В разделе 1.4.3 уже рассматривалась программа, читающая неопределенное количество значений типа int. Напишем подобную программу, но читающую строки.

int main() {

 string word;

 while (cin >> word)    // читать до конца файла

  cout << word << endl; // отобразить каждое слово с новой строки

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных