Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Если требуется больше символов: wchar_t




Иногда программа должна обрабатывать наборы символов, которые не вписываются в 8 битов ASCII кода (пример – система японских иероглифических писем или символы кириллицы). На этот случай в языке С++ имеется пара способов. Во-первых, если большой набор символов является базовым набором символов для реализации, то производитель компилятора может определить char как 16-битовый тип, или даже больше. Во-вторых, реализация может поддерживать как малый базовый набор символов, так и расширенный набор. Традиционный 8-битовый тип char может представлять базовый набор символов, а другой тип, называемый wchar_t (wide character type) – расширенный тип символов. Тип wchar_t является целочисленным типом, имеющим достаточно памяти для представления самого большого расширенного набора символов в системе.

1.5. Стандартные функции ввода-вывода С++

Функции форматного ввода-вывода printf() и scanf()

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

Функция printf() позволяет выводить информацию на экран при программировании в консольном режиме. Данная функция определена в библиотеке <stdio> и имеет такой синтаксис:

int printf(const char *format [, argument]...);

Здесь первый аргумент (*format) – форматная спецификация определяет вид строки, которая выводится на экран и может содержать специальные управляющие символы для вывода переменных. Далее, идет необязательный список аргументов – тех переменных, значения которых необходимо вывести на экран. Функция возвращает либо число отображенных символов, либо отрицательное число в случае неправильной работы.

Структура форматной спецификации имеет следующий общий вид:

%<флаги><ширина><.точность><модификатор>тип

Символы управления форматированием, составляющие различные элементы спецификации, содержит таблица (Приложение B Таблица 18).

printf("Выводимый текст");

Также можно выводить переменные разного типа, от целочисленных до строковых. Для выполнения этой операции используются специальные управляющие символы, которые называются спецификаторами и которые начинаются с "%" (Приложение B Таблица 18).

int i =5; float f = 10.5; printf("i = %d, f = %f", i, f);

Кроме спецификаторов в функции printf() можно использовать управляющие последовательности (Приложение B Таблица 19).

printf("i = %d,\n f = %f", i, f);

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

#include "stdafx.h" #include <iostream> using namespace std; int main() { printf("\t\tВсем привет! Это программа."); // две табуляции и печать сообщения printf("\rЭто – то же.\n"); // возврат на начало строки и печать сообщения printf("\'в кавычках\' без кавычек \"в двойных кавычках\""); system("pause"); return 0; }

Аналогично используется и функция scanf(), это функция ввода, также располагается в библиотеки <stdio> и имеет синтаксис:

int scanf(const char *format [,argument]...);

Переменная *format определяет форматную строку для определения типа вводимых данных и может содержать спецификаторы. Затем, следует список необязательных аргументов.

#include <stdio> int main() { int age; float tel; printf("Введите ваш возраст: "); scanf("%d", &age); printf("Введите ваш номер телефона: "); scanf("%f", &tel); printf("Ваш возраст = %d, Ваш номер = %f", age, tel); return 0; }

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

scanf(" %d, %d ", &n, &m);

Функция scanf() возвращает число успешно считанных элементов. Если операции считывания не происходило, что бывает в том случае, когда вместо ожидаемого цифрового значения вводится какая-то буква, то возвращаемое значение будет равно 0.

Обратите внимание на то, что в списке параметров функции scanf() перед каждой перемнной стоит знак &, он означает, что данные будут переданы из функции в программу по ссылке. Пока это просто лучше запомнить, но позднее, в параграфе 4.1 способы передачи данных из функции будут рассматриваться детально.

Потоковый ввод-вывод cin/cout

Потоковые объекты ввода/вывода cout и cin – это объекты классов istream (от Input Stream - поток ввода) и ostream (от Output Stream - поток вывода) соответственно, они имеют операторы извлечения из потока (>>) и вставки в поток (<<).

Система классов ввода/вывода довольна сложна. Базовым классом является класс ios (от Input/Output Stream - потоковый ввод/вывод). У класса ios довольно много производных классов. На данный момент нас интересует лишь несколько.

По умолчанию, в адресном пространстве using namespace std, поток вывода cout связан с видеодрайвером ОС, а поток ввода cin – с буфером клавиатуры, но они могут быть перенастроены на другие устройства.

Для использования потокового ввода и вывода необходимо подключить файл <iostream.h>.

#include <vcl.h> #include <iostream.h> int _tmain(int argc, char* argv[]) { cout << "Hello, World"; cin.get(); return 0; }

Строка cout << "Hello, World"; выводит на экран строку, вторая строка cin.get(); необходима для того чтобы организовать задержку до нажатия клавиши, последняя строка программы возвращает значение 0;

int a=10, b=5; cout << a << "+" << b << "=" << a+b; cout << "\n"; cout << a << "-" << b << "=" << a-b;

Разберем ввод данных с клавиатуры. Для этого разработаем приложение спрашивающее у пользователя его имя.

#include <vcl.h> #include <iostream.h> #include <conio.h> int _tmain(int argc, char* argv[]) { char *a; // для хранения строки - массива символов cout << "Enter you name"; cin >> a; cout << "\n" << "Hello: " << a; getch(); return 0; }

Здесь включен заголовочный файл <conio.h> для организации задержки экрана посредством функции getch().

Как видно из приведенных выше листингов, в строковые константы, выводимые объектом cout в поток вывода и получаемые cin из потока ввода, можно включать управляющие последовательности (управляющие символы - Приложение B, Таблица 19).

Лабораторная работа №1. Типы данных. Ввод-вывод

Продолжительность – 2 часа.

Максимальный рейтинг – 8 баллов.

Цель работы

Освоение следующих умений, навыков, компетенций:

Создать проект на Visual C++, написать простейшую программу на языке С++, отладить и запустить на выполнение программу. Научиться задавать переменные и константы следующих типов: целого, вещественного, символьного и строкового – в соответствии с индивидуальным заданием. Освоить два способа ввода с клавиатуры и вывода на экран значений этих переменных – форматный и потоковый способы. Изучить спецификаторы, форматы ввода-вывода и управляющие символы.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...