Анимация
JavaScript
|
Главная Библионтека Таблица 13.27. Манипуляторы формата вывода вещественных чисел
Эта команда выводит следующий результат: 1.234567899-01 Манипулятору setprecision() передается аргумент, поэтому для его использования необходимо включить в программу заголовочный файл <iomanip>. Общие параметры форматирования Список форматных флагов завершается флагами skipws и unitbuf (табл. 13.28). Таблица 13.28. Оставшиеся форматные флаги Флаг Описание skipws Автоматическое игнорирование начальных пропусков при чтении данных оператором >> unitbuf Принудительный вывод содержимого буфера после каждой операции записи Флаг ios::skipws устанавливается по умолчанию; это означает, что по умолчанию некоторые операции чтения игнорируют начальные пропуски. Обычно этот флаг удобнее держать установленным. Например, вам не придется специально заботиться о чтении пробелов, разделяющих числа. С другой стороны, это означает, что вы не сможете читать пробелы оператором >>, потому что начальные пропуски всегда игнорируются. Флаг ios::unitbuf управляет буферизацией вывода. При установленном флаге ios::unitbuf вывод практически выполняется без буферизации - выходной буфер очищается после каждой операции записи. По умолчанию этот флаг не устанавливается. Исключение составляют потоки данных сегг и wcerr, для которых этот флаг устанавливается в исходном состоянии. В табл. 13.29 представлены манипуляторы, используемые для управления дополнительными флагами. Таблица 13.29. Манипуляторы для управления дополнительными форматными флагами Манипулятор Описание skipws Автоматическое игнорированиеначальных пропусков при чтении данных оператором >> (установка флага ios::skipws) Интернационализация 601 Манипулятор Описание noskipws Обработка начальных пропусков при чтении данных оператором » (сброс флага ios::skipws) unitbuf Принудительный вывод содержимого буфера после каждой операции записи (установка флага ios::unitbuf) nounitbuf Отмена принудительного вывода содержимого буфера после каждой операции записи (установка флага ios::unitbuf) 1нтернационализация Форматы ввода-вывода также адаптируются к национальным стандартам. Функции, определенные для этой цели в классе ios base, перечислены в табл. 13.30. Таблица 13.30. Функции интернационализации Функция Описание imbue(loc) Назначение объекта локального контекста getlocO Получение текущего объекта локального контекста С каждым потоком данных связывается некоторый объект локального контекста. По умолчанию исходный объект локального контекста создается как копия глобального объекта локального контекста на момент конструирования потока данных, В частности, объект локального контекста определяет параметры форматирования чисел (например, символ, используемый в качестве десятичной точки, или режим числового/строкового представления логических величин). В отличие от аналогичных средств С средства интернационализации стандартной библиотеки С++ позволяют задавать локальные контексты на уровне отдельных потоков данных. Например, такая возможность позволяет выполнять чтение вещественных чисел в американском формате и последующей записи в немецком формате (в котором вместо «десятичной точки» используется запятая). На с. 665 представлен подробный пример. При работе с потоками данных часто возникает задача приведения отдельных символов (в первую очередь управляющих) к кодировке потока данных. Для этого в потоках данных поддерживаются функции преобразования, представленные в табл. 13.31. Таблица 13.31. Вспомогательные функции интернационализации Функция Описание widen(c) Преобразование символа с типа char к кодировке, используемой потоком narrow(c,def) Преобразование символа с из кодировки, используемой потоком, к типу char (если такого символа не существует, возвращается def) Доступ к файлам Потоки данных также используются для работы с файлами. В стандартную библиотеку С++ входят четыре основных шаблона, для которых определены стандартные специализации. О Шаблон basicjfstreamo со специализациями ifstream и wifstream обеспечивает чтение файлов («файловый входной поток данных»). О Шаблон basic ofstream<> со специализациями ofstream и wofstream обеспечивает запись файлов («файловый выходной поток данных»). О Шаблон basic fstream<> со специализациями fstream и wfstream обеспечивает чтение и запись файлов. О Шаблон basic filebuf<> со специализациями filebuf и wfilebuf используется только другими классами файловых потоков данных для выполнения фактических операций чтения и записи символов. Иерархия классов файловых потоков данных, представленная на рис. 13.2, соответствует общей иерархии базовых классов потоков данных. Эти классы определяются в заголовочном файле <f5tream> следующим образом: namespace std { template <class charT, class traits = char traits<charT> > class basic ifstream; typedef basic ifstream<char> ifstream: typedef basic ifstream<wchar t> wifstream: template <clas5 charT, class traits = char traits<charT> > class basic ofstream; typedef basic ofstream<char> ofstream: typedef basic ofstream<wchar t> wofstream; template <class charT. class traits = char traits<charT> > class basic fstream: typedef basic fstreani<char> fstream; typedef basic fstream<wchar t> wfstream: template <class charT. class traits = char trait5<charT> > Например, следующая команда преобразует символ новой строки в кодировку, используемую потоком данных: strm.widen(\n) За дополнительной информацией о локальных контекстах и интернационализации обращайтесь к главе 14. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 [ 194 ] 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 |