Программирование >>  Инициализация объектов класса, структура 

1 ... 338 339 340 [ 341 ] 342 343 344 ... 395


is no the same

such creature, she tells him, at me time wanting him to tell her more. Shyly, she asks, I mean, Daddy, is there?

Далее программа выводит в файл outfile отсортированную последовательность строк. Конечно, на порядок слов влияют знаки препинания; в следующем разделе мы это исправим:

Daddy, I A Alice Daddy Daddy, Ea Her Shyly, a alive, almost asks, at beautiful bird bird, blows but creature, fiery fiery flight. flowing hair, hair. has he her her her, him him, in is is it like long looks magical mean, more. no red same says she

she shush, such tell tells tells the the

there there? through time to untamed. wanting when wind

(В разделе 20.6 мы познакомимся с файловым вводом/выводом более подробно.)

Библиотека iostream поддерживает также ввод/вывод в область памяти, при этом поток связывается со строкой в памяти программы. С помощью потоковых операторов ввода/вывода мы можем записывать данные в эту строку и читать их оттуда. Объект для строкового ввода/вывода определяется как экземпляр одного из следующих классов:

istringstream, производный от istream, читает из строки;

ostringstream, производный от ostream, пишет в строку;

stringstream, производный от iostream, выполняет как чтение, так и запись.

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

#include <sstream>

(Файл sstream уже включает iostream, так что включать оба файла необязательно.) В следующем фрагменте объект класса ostringstream используется для форматирования сообщения об ошибке, которое возвращается вызывающей программе.



#include <sstream>

string program name( our program ); string version( 0.01 );

...

string mumble( int *array, int size ) {

if ( ! array ) {

ostringstream out message;

out message << ошибка:

<< program name << -- << version

<< : FILE << : << LINE

<< -- указатель равен 0;

<< а доен адресовать массив.\n ;

возвращаем строку, в которой находится сообщение return out message.str();

...

(В разделе 20.8 мы познакомимся со строковым вводом/выводом более подробно.)

Потоки ввода/вывода поддерживают два предопределенных типа: char и wchar t. В этой главе мы расскажем только о чтении и записи в потоки данных типа char. Помимо них, в библиотеке iostream имеется набор классов и объектов для работы с типом wchar t. Они отличаются от соответствующих классов, использующих тип char, наличием префикса w. Так, объект стандартного ввода называется wcin, стандартного вывода -wcout, стандартного вывода для ошибок - wcerr. Но набор заголовочных файлов для char и wchar t один и тот же.

Классы для ввода/вывода данных типа wchar t называются wostream, wistream, wiostream, для файлового ввода/вывода - wofstream, wifstream, wfstream, а для строкового - wostringstream, wistringstream, wstringstream.

20.1. Оператор вывода <<

Оператор вывода обычно применяется для записи на стандартный вывод cout.

#include <iostream>

int main() {

cout << сплетница Анна вия\п ;

Например, программа

печатает на терминале строку:

сплетница Анна Ливия



Имеются операторы, принимающие аргументы любого встроенного типа данных, включая const char*, а также типов string и complex из стандартной библиотеки. Любое выражение, включая вызов функции, может быть аргументом оператора вывода при условии, что результатом его вычисления будет тип, принимаемый каким-либо

#include <iostream> #include <string.h>

int main() {

cout << Длина Усс равна :\t ; cout << strlen( Улисс ); cout << \n;

cout << Размер Улисс равен:\t ; cout << sizeof( Улисс ); cout << endl;

вариантом этого оператора. Например, программа

выводит на терминал следующее:

Длина Улисс равна:7 Размер Улисс равен:8

endl - это манипулятор вывода, который вставляет в выходной поток символ перехода на новую строку, а затем сбрасывает буфер объекта ostream. (С буферизацией мы познакомимся в разделе 20.9.)

Операторы вывода, как правило, удобнее сцеплять в одну инструкцию. Например,

#include <iostream> #include <string.h>

int main() {

операторы вывода можно сцеплять

cout << Длина Усс равна :\t ; << strlen( Улисс ) << \n;

cout << Размер Улисс равен:\t

<< sizeof( Улисс ) << endl; предыдущую программу можно записать таким образом:

Сцепление операторов вывода (и ввода тоже) возможно потому, что результатом выражения

cout << некоторая строка ;



1 ... 338 339 340 [ 341 ] 342 343 344 ... 395

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика