Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Ввод-вывод строкСтр 1 из 6Следующая ⇒
Цель и порядок работы Цель работы – ознакомиться с возможностями ввода-вывода языка C++, освоить основные операции работы со строками и файлами.
Порядок выполнения работы: - ознакомиться с описанием лабораторной работы; - получить задание у преподавателя, согласно своему варианту; - написать программу и отладить ее на ЭВМ; - оформить отчет. Краткая теория В библиотеке C++ имеется набор классов для управления вводом-выводом. В отличие от функций буферизованного ввода-вывода библиотек C (таких, как printf и scanf, не выполняющих никаких проверок на соответствие аргументов форматной строке) классы потоков C++ безопасны в отношении типа. Ввод-вывод использует механизм перегрузки операций, гарантирующий вызов нужной функции-операции для указанного типа данных. Это главное преимущество потоков языка C++. 2.1 Строки в C++ Ввод-вывод строк В C++ есть два вида строк С-строки и класс string стандартной библиотеки C++. C-строка представляет собой массив символов, завершающийся символом с кодом 0. Класс string более безопасен в использовании, чем C-строки, но и более ресурсоемок. Для грамотного использования этого класса требуется знание объектно-ориентированного программирования. Кроме этого существуют более функциональные и удобные в использовании классы библиотеки.net, которые будут рассмотрены позже, поэтому ограничимся рассмотрением C-строк.
Память под строки, как и под другие массивы, может выделяться как компилятором, так и непосредственно в программе. Длина динамической строки может задаваться выражением, длина нединамической строки должна быть только константным выражением. Чаще всего длина строки задается частным случаем константного выражения – константой. Удобно задавать длину с помощью именованной константы, поскольку такой вариант, во-первых, лучше читается, а во-вторых, при возможном изменении длины строки потребуется изменить программу только в одном месте:
const int len_str = 100; char msg[len_str];
При задании длины необходимо учитывать завершающий нуль-символ. Например, в строке, приведенной выше, можно хранить не 100 символов, а только 99. Строки можно при описании инициализировать строковыми константами, при этом нуль-символ в позиции, следующей за последним заданным символом, формируется автоматически:
const int len_str = 100; char msg[len_str] = " Новая строка";
Если строка при определении инициализируется, ее размерность можно опускать (компилятор сам выделит память, достаточную для размещения всех символов строки и завершающего нуля):
char msg[ ] = " Новая строка"; //13 символов
Для размещения строки в динамической памяти надо описать указатель на char, а затем выделить память с помощью new или mallос (первый способ предпочтительнее).
char *p = new char[len_str];
Естественно, что в этом случае длина строки может быть переменной и задаваться на этапе выполнения программы. Динамические строки, как и другие динамические массивы, нельзя инициализировать при создании.
Для ввода-вывода строк используются как уже известные нам объекты cin и cout, так и функции, унаследованные из библиотеки С. Рассмотрим сначала первый способ:
#include " stdafx.h" #include < iostream>
using namespace std;
int main() { const int n = 80; char s[n]; cin > > s; cout < < s < < endl; return 0; }
Строки вводится точно так же, как и переменные других типов. При вводе строки из нескольких слов, программа выведет только первое слово. Это связано с тем, что ввод выполняется до первого пробельного символа (то есть пробела, знака табуляции или символа перевода строки '\n') Если требуется ввести строку, состоящую из нескольких слов, в одну строковую переменную, используются методы getline или get класса istream, объектом которого является cin.
#include " stdafx.h" #include < iostream>
using namespace std;
int main() { const int n = 80; char s[n]; cin.getline(s, n); cout < < s < < endl; return 0; }
Метод getline считывает из входного потока n - 1 символов или менее (если символ перевода строки встретится раньше) и записывает их в строковую переменную s, Символ перевода строки также считывается (удаляется) из входного потока, но не записывается в переменную, вместо него размещается завершающий '\0'. Если в строке исходных данных более n - 1 символов, следующий ввод будет выполняться из той же строки, начиная с первого несчитанного символа. Метод get работает аналогично, но оставляет в потоке символ перевода строки. В строковую переменную добавляется завершающий ноль. Если в программе требуется ввести несколько строк, метод getl1nе удобно использовать в заголовке цикла, например:
#include " stdafx.h" #include < iostream>
using namespace std;
int main() { const int n = 80; char s[n]; while (cin.getline(s, n)) { cout < < s < < endl; }; return 0; }
Рассмотрим теперь способы ввода-вывода строк, перекочевавшие в С++ из языка С. Во-первых, можно использовать для ввода строки известную нам функцию scanf, а для вывода – printf, задав спецификацию формата %s. Ввод будет выполняться так же, как и для классов ввода-вывода – до первого пробельного символа. Чтобы ввести строку, состоящую из нескольких слов, используется спецификация %c (символы) с указанием максимального количества вводимых символов, например:
scanf(" %10c", s);
Количество символов может быть только целой константой. При выводе можно задать перед спецификацией %s количество позиций, отводимых под строку:
printf(" %10s", s);
Строка при этом выравнивается по правому краю отведенного поля. Если заданное количество позиций недостаточно для размещения строки, оно игнорируется, и строка выводится целиком. Библиотека содержит также функции, специально предназначенные для ввода-вывода строк: gets и puts. Функция gets(s) читает символы с клавиатуры до появления символа новой строки и помещает их в строку s (сам символ новой строки в строку не включается, вместо него в строку заносится нуль-символ). Функция puts(s) выводит строку s на стандартное устройство вывода, заменяя завершающий 0 символом новой строки. Возвращает неотрицательное значение при успехе или EOF при ошибке. Функциями семейства printf удобнее пользоваться в том случае, если в одном операторе требуется ввести или вывести данные различных типов. Если же работа выполняется только со строками, проще применять специальные функции для ввода-вывода строк gets и puts.
|