Читаем C++: базовый курс полностью

Проще всего считать строку с клавиатуры, создав массив, который примет эту строку с помощью инструкции cin. Считывание строки, введенной пользователем с клавиатуры, отображено в следующей программе.

// Использование cin-инструкции для считывания строки с клавиатуры.

#include

using namespace std;

int main()

{

 char str[80];

 cout << "Введите строку: ";

  cin >> str; // Считываем строку с клавиатуры.

 cout << "Вот ваша строка: ";

 cout << str;

 return 0;

}

Несмотря на то что эта программа формально корректна, она не лишена недостатков. Рассмотрим следующий результат ее выполнения.

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

Вот ваша строка: Это

Как видите, при выводе строки, введенной с клавиатуры, программа отображает только слово "Это", а не всю строку. Дело в том, что оператор ">>" прекращает считывание строки, как только встречает символ пробела, табуляции или новой строки (будем называть эти символы пробельными).

Для решения этой проблемы можно использовать еще одну библиотечную функцию gets(). Общий формат ее вызова таков.

gets(имя_массива);

Если в программе необходимо считать строку с клавиатуры, вызовите функцию gets(), а в качестве аргумента передайте имя массива, не указывая индекса. После выполнения этой функции заданный массив будет содержать текст, введенный с клавиатуры. Функция gets() считывает вводимые пользователем символы до тех пор, пока он не нажмет клавишу . Для вызова функции gets() в программу необходимо включить заголовок .

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

// Использование функции gets() для считывания строки с клавиатуры.

#include

#include

using namespace std;

int main()

{

 char str[80];

 cout << "Введите строку: ";

 gets(str); // Считываем строку с клавиатуры.

 cout << "Вот ваша строка: ";

 cout << str;

 return 0;

}

На этот раз после запуска новой версии программы на выполнение и ввода с клавиатуры текста "Это простой тест" строка считывается полностью, а затем так же полностью и отображается.

Введите строку: Это простой тест

Вот ваша строка: Это простой тест

В этой программе следует обратить внимание на следующую инструкцию.

cout << str;

Здесь (вместо привычного литерала) используется имя строкового массива. И хотя причина такого использования инструкции cout вам станет ясной после прочтения еще нескольких глав этой книги, пока кратко заметим, что имя символьного массива, который содержит строку, можно использовать везде, где допустимо применение строкового литерала.

При этом имейте в виду, что ни оператор ">>", ни функция gets() не выполняют граничной проверки (на отсутствие нарушения границ массива). Поэтому, если пользователь введет строку, длина которой превышает размер массива, возможны неприятности, о которых упоминалось выше. Из сказанного следует, что оба описанных здесь варианта считывания строк с клавиатуры потенциально опасны. Однако после подробного рассмотрения С++-возможностей ввода-вывода в главе 18 мы узнаем способы, позволяющие обойти эту проблему.

Некоторые библиотечные функции обработки строк

Язык C++ поддерживает множество функций обработки строк. Самыми распространенными из них являются следующие.

strcpy()

strcat()

strlen()

strcmp()

Для вызова всех этих функций в программу необходимо включить заголовок . Теперь познакомимся с каждой функцией в отдельности.

Функция strcpy()

Общий формат вызова функции strcpy() таков:

strcpy (to, from);

Функция strcpy() копирует содержимое строки from в строку to. Помните, что массив, используемый для хранения строки to, должен быть достаточно большим, чтобы в него можно было поместить строку из массива from. В противном случае массив to переполнится, т.е. произойдет выход за его границы, что может привести к разрушению программы.

Использование функции strcpy() демонстрируется в следующей программе, которая копирует строку "Привет" в строку str.

#include

#include

using namespace std;

int main()

{

 char str[80];

 strcpy(str, "Привет");

 cout << str;

 return 0;

}

Функция strcat()

Обращение к функции strcat() имеет следующий формат.

strcat(s1, s2);

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

Все книги серии Изучайте C++ с профессионалами

C++: базовый курс
C++: базовый курс

В этой книге описаны все основные средства языка С++ - от элементарных понятий до супервозможностей. После рассмотрения основ программирования на C++ (переменных, операторов, инструкций управления, функций, классов и объектов) читатель освоит такие более сложные средства языка, как механизм обработки исключительных ситуаций (исключений), шаблоны, пространства имен, динамическая идентификация типов, стандартная библиотека шаблонов (STL), а также познакомится с расширенным набором ключевых слов, используемым в .NET-программировании. Автор справочника - общепризнанный авторитет в области программирования на языках C и C++, Java и C# - включил в текст своей книги и советы программистам, которые позволят повысить эффективность их работы. Книга рассчитана на широкий круг читателей, желающих изучить язык программирования С++.

Герберт Шилдт

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

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

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

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

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

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

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

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

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