#include <iosfwd> // see [iosfwd.syn] namespace std { using streamoff = implementation-defined; using streamsize = implementation-defined; template <class stateT> class fpos; class ios_base; template <class charT, class traits = char_traits<charT>> class basic_ios; // [std.ios.manip], manipulators ios_base& boolalpha (ios_base& str); ios_base& noboolalpha(ios_base& str); ios_base& showbase (ios_base& str); ios_base& noshowbase (ios_base& str); ios_base& showpoint (ios_base& str); ios_base& noshowpoint(ios_base& str); ios_base& showpos (ios_base& str); ios_base& noshowpos (ios_base& str); ios_base& skipws (ios_base& str); ios_base& noskipws (ios_base& str); ios_base& uppercase (ios_base& str); ios_base& nouppercase(ios_base& str); ios_base& unitbuf (ios_base& str); ios_base& nounitbuf (ios_base& str); // [adjustfield.manip], adjustfield ios_base& internal (ios_base& str); ios_base& left (ios_base& str); ios_base& right (ios_base& str); // [basefield.manip], basefield ios_base& dec (ios_base& str); ios_base& hex (ios_base& str); ios_base& oct (ios_base& str); // [floatfield.manip], floatfield ios_base& fixed (ios_base& str); ios_base& scientific (ios_base& str); ios_base& hexfloat (ios_base& str); ios_base& defaultfloat(ios_base& str); // [error.reporting], error reporting enum class io_errc { stream = 1 }; template <> struct is_error_code_enum<io_errc> : public true_type { }; error_code make_error_code(io_errc e) noexcept; error_condition make_error_condition(io_errc e) noexcept; const error_category& iostream_category() noexcept; }
using streamoff = implementation-defined;
using streamsize = implementation-defined;
Обычно long long.
streamsize используется в большинстве мест , где ISO C будет использовать size_t.streamsize Можно использовать в большинстве size_tслучаев, за исключением strstreambuf конструкторов, требующих отрицательных значений. Вероятно, это должен быть подписанный тип, соответствующий size_t (что и вызывает Posix.2 ssize_t).
namespace std { class ios_base { public: class failure; // see below // [ios::fmtflags], fmtflags using fmtflags = T1; static constexpr fmtflags boolalpha = unspecified; static constexpr fmtflags dec = unspecified; static constexpr fmtflags fixed = unspecified; static constexpr fmtflags hex = unspecified; static constexpr fmtflags internal = unspecified; static constexpr fmtflags left = unspecified; static constexpr fmtflags oct = unspecified; static constexpr fmtflags right = unspecified; static constexpr fmtflags scientific = unspecified; static constexpr fmtflags showbase = unspecified; static constexpr fmtflags showpoint = unspecified; static constexpr fmtflags showpos = unspecified; static constexpr fmtflags skipws = unspecified; static constexpr fmtflags unitbuf = unspecified; static constexpr fmtflags uppercase = unspecified; static constexpr fmtflags adjustfield = see below; static constexpr fmtflags basefield = see below; static constexpr fmtflags floatfield = see below; // [ios::iostate], iostate using iostate = T2; static constexpr iostate badbit = unspecified; static constexpr iostate eofbit = unspecified; static constexpr iostate failbit = unspecified; static constexpr iostate goodbit = see below; // [ios::openmode], openmode using openmode = T3; static constexpr openmode app = unspecified; static constexpr openmode ate = unspecified; static constexpr openmode binary = unspecified; static constexpr openmode in = unspecified; static constexpr openmode out = unspecified; static constexpr openmode trunc = unspecified; // [ios::seekdir], seekdir using seekdir = T4; static constexpr seekdir beg = unspecified; static constexpr seekdir cur = unspecified; static constexpr seekdir end = unspecified; class Init; // [fmtflags.state], fmtflags state fmtflags flags() const; fmtflags flags(fmtflags fmtfl); fmtflags setf(fmtflags fmtfl); fmtflags setf(fmtflags fmtfl, fmtflags mask); void unsetf(fmtflags mask); streamsize precision() const; streamsize precision(streamsize prec); streamsize width() const; streamsize width(streamsize wide); // [ios.base.locales], locales locale imbue(const locale& loc); locale getloc() const; // [ios.base.storage], storage static int xalloc(); long& iword(int index); void*& pword(int index); // destructor: virtual ~ios_base(); // [ios.base.callback], callbacks; enum event { erase_event, imbue_event, copyfmt_event }; using event_callback = void (*)(event, ios_base&, int index); void register_callback(event_callback fn, int index); ios_base(const ios_base&) = delete; ios_base& operator=(const ios_base&) = delete; static bool sync_with_stdio(bool sync = true); protected: ios_base(); private: static int index; // exposition only long* iarray; // exposition only void** parray; // exposition only }; }
ios_base определяет несколько типов членов:
тип failure, определяемый либо как производный класс, system_error либо как синоним класса, производного от system_error;
класс Init;
три типа Bitmask, fmtflags, iostate, и openmode;
перечислимого типа, seekdir.
Он поддерживает несколько типов данных:
информация о состоянии, отражающая целостность буфера потока;
управляющая информация, которая влияет на то, как интерпретировать (форматировать) входные последовательности и как генерировать (форматировать) выходные последовательности;
дополнительная информация, которая хранится программой для личного пользования.
[ Note: Для демонстрации поддерживаемые данные представлены здесь как:
static int index, определяет следующий доступный уникальный индекс для массивов целых чисел или указателей, поддерживаемых для частного использования программой, инициализированных неопределенным значением;
long* iarray, указывает на первый элементlong массива произвольной длины, предназначенного для частного использования программой;
void** parray, указывает на первый элемент массива указателей произвольной длины, предназначенного для частного использования программой.
— end note ]
namespace std { class ios_base::failure : public system_error { public: explicit failure(const string& msg, const error_code& ec = io_errc::stream); explicit failure(const char* msg, const error_code& ec = io_errc::stream); }; }
Реализацию разрешено определять ios_base::failure как синоним класса с функциональностью, эквивалентной классу, ios_base::failure показанному в этом подпункте. [ Note: Когда ios_base::failure является синонимом другого типа, он должен предоставлять вложенный тип failureдля имитации имени внедренного класса. ] Класс определяет базовый класс для типов всех объектов, созданных как исключения функциями в библиотеке iostreams, чтобы сообщать об ошибках, обнаруженных во время операций с буфером потока. — end note failure
При ios_base::failure создании исключений реализации должны предоставлять значения, ec которые определяют конкретную причину сбоя. [ Note: Ошибки, возникающие в операционной системе, обычно сообщаются как system_category() ошибки со значением ошибки, равным номеру ошибки, сообщаемому операционной системой. Об ошибках, возникающих в библиотеке потоков, обычно сообщается как error_code(io_errc::stream, iostream_category()). ] — end note
explicit failure(const string& msg, const error_code& ec = io_errc::stream);
explicit failure(const char* msg, const error_code& ec = io_errc::stream);
using fmtflags = T1;
Тип fmtflags - это bitmask type. Установка его элементов имеет эффекты, указанные в Табл 107.
Элемент | Эффект (ы), если установлен |
boolalpha | вставить и извлечь bool тип в алфавитном формате |
dec | преобразует целочисленный ввод или генерирует целочисленный вывод в десятичной системе счисления |
fixed | генерировать вывод с плавающей запятой в нотации с фиксированной запятой |
hex | преобразует целочисленный ввод или генерирует целочисленный вывод в шестнадцатеричной системе счисления |
internal | добавляет символы заливки в обозначенную внутреннюю точку в определенном сгенерированном выводе или идентично, right если такая точка не обозначена |
left | добавляет символы заливки справа (конечные позиции) определенного сгенерированного вывода |
oct | преобразует целочисленный ввод или генерирует целочисленный вывод в восьмеричной системе счисления |
right | добавляет символы заполнения слева (начальные позиции) определенного сгенерированного вывода |
scientific | генерирует вывод с плавающей запятой в экспоненциальной нотации |
showbase | генерирует префикс, указывающий числовую основу сгенерированного целочисленного вывода |
showpoint | безоговорочно генерирует символ десятичной точки в сгенерированном выводе с плавающей запятой |
showpos | генерирует + знак в неотрицательном сгенерированном числовом выводе |
skipws | пропускает начальные пробелы перед определенными операциями ввода |
unitbuf | сбрасывает вывод после каждой операции вывода |
uppercase | заменяет определенные строчные буквы их эквивалентами в верхнем регистре в сгенерированном выводе |
using iostate = T2;
Типом iostate является a bitmask type , содержащий элементы, указанные в таблице 109.
Элемент | Эффект (ы), если установлен |
badbit | указывает на потерю целостности во входной или выходной последовательности (например, на неисправимую ошибку чтения из файла); |
eofbit | указывает, что операция ввода достигла конца входной последовательности; |
failbit | указывает, что операция ввода не смогла прочитать ожидаемые символы или что операция вывода не смогла сгенерировать желаемые символы. |
using openmode = T3;
Тип openmode - это bitmask type. Он содержит элементы, указанные в таблице 110.
Элемент | Эффект (ы), если установлен |
app | стремиться закончить перед каждой записью |
ate | открывать и стремиться к завершению сразу после открытия |
binary | выполнять ввод и вывод в двоичном режиме (в отличие от текстового режима) |
in | открыт для ввода |
out | открыт для вывода |
trunc | обрезать существующий поток при открытии |
using seekdir = T4;
Тип seekdir - это объект enumerated type , содержащий элементы, указанные в таблице 111.
Элемент | Имея в виду |
beg | запросить поиск (для последующего ввода или вывода) относительно начала потока |
cur | запросить поиск относительно текущей позиции в последовательности |
end | запросить поиск относительно текущего конца последовательности |
namespace std {
class ios_base::Init {
public:
Init();
~Init();
private:
static int init_cnt; // exposition only
};
}
Класс Init описывает объект, конструкция которого обеспечивает создание восьми объектов, объявленных в <iostream> ([iostream.objects]), которые связывают буферы файловых потоков со стандартными потоками C, предусмотренными функциями, объявленными в <cstdio>.
Для демонстрации поддерживаемые данные представлены здесь как:
static int init_cnt, подсчитывает количество вызовов конструктора и деструктора для класса Init, инициализированного нулем.
Init();
Effects: Создает объект класса Init. Формирует и инициализирует объекты cin, cout, cerr, clog, wcin, wcout, wcerr, и , wclog если они еще не были построены и инициализируется.
~Init();
fmtflags flags() const;
fmtflags flags(fmtflags fmtfl);
fmtflags setf(fmtflags fmtfl);
fmtflags setf(fmtflags fmtfl, fmtflags mask);
void unsetf(fmtflags mask);
streamsize precision() const;
streamsize precision(streamsize prec);
streamsize width() const;
Returns: Минимальная ширина поля (количество символов), генерируемая при определенных преобразованиях вывода.
streamsize width(streamsize wide);
locale imbue(const locale& loc);
Effects: Вызывает каждую зарегистрированную пару обратного вызова (fn, index) ([ios.base.callback]) (*fn)(imbue_event, *this, index) в такой момент, когда вызов ios_base::getloc() изнутри fn возвращает новое значение локали loc.
locale getloc() const;
bool sync_with_stdio(bool sync = true);
Returns: true если предыдущее состояние standard iostream objects было синхронизировано, в противном случае возвращается false. При первом вызове функция возвращается true.
Когда стандартный объект iostream str находится synchronized со стандартным потоком stdio f, эффект вставки символа с c помощью
fputc(f, c);
такой же, как эффект
str.rdbuf()->sputc(c);
для любых последовательностей символов; эффект извлечения персонажа с c помощью
c = fgetc(f);
такой же, как эффект
c = str.rdbuf()->sbumpc();
для любых последовательностей символов; и эффект отодвигая персонажа c по
ungetc(c, f);
такой же, как эффект
str.rdbuf()->sputbackc(c);
для любой последовательности символов.292
Это означает, что операции над стандартным объектом iostream могут произвольно сочетаться с операциями над соответствующим потоком stdio. На практике синхронизация обычно означает, что стандартный объект iostream и стандартный объект stdio совместно используют буфер.
static int xalloc();
long& iword(int idx);
Effects: Если iarray - нулевой указатель, выделяет массив long неопределенного размера и сохраняет указатель на его первый элемент в iarray. Затем функция расширяет массив, на который указывает, по iarray мере необходимости, чтобы включить элемент iarray[idx]. Каждый вновь выделенный элемент массива инициализируется нулем. Возвращенная ссылка недействительна после любых других операций с объектом.293 Однако значение указанного хранилища сохраняется, так что до следующего вызова copyfmtвызов iword с тем же индексом дает еще одну ссылку на то же значение. Если функция не работает294 и *this является подобъектом базового класса basic_ios<> объекта или подобъекта, эффект эквивалентен вызову basic_ios<>::setstate(badbit) производного объекта (который может вызвать ошибку failure).
void*& pword(int idx);
Effects: Если parray - нулевой указатель, выделяет массив указателей на void неопределенный размер и сохраняет указатель на свой первый элемент в parray. Затем функция расширяет массив, на который указывает, по parray мере необходимости, чтобы включить элемент parray[idx]. Каждый вновь выделенный элемент массива инициализируется нулевым указателем. Возвращенная ссылка недействительна после любых других операций с объектом. Однако значение указанного хранилища сохраняется, так что до следующего вызова copyfmtвызов pword с тем же индексом дает еще одну ссылку на то же значение. Если функция не работает295 и *this является подобъектом базового класса basic_ios<> объекта или подобъекта, эффект эквивалентен вызову basic_ios<>::setstate(badbit) производного объекта (который может вызвать ошибку failure).
Returns: Об успехе parray[idx]. В случае ошибки действительный void*& инициализируется значением 0.
Remarks: После последующего обращения к pword(int) тому же объекту более раннее возвращаемое значение может быть недействительным.
Реализация может реализовать как целочисленный массив, на который указывает, так iarray и массив указателей, на который указывает parray как разреженные структуры данных, возможно, с одноэлементным кешем для каждой.
например, потому что он не может выделить место.
например, потому что он не может выделить место.
void register_callback(event_callback fn, int index);
Effects: Регистрирует пару (fn, index) таким образом, чтобы во время вызовов imbue() ([ios.base.locales]) copyfmt(), или ~ios_base() ([ios.base.cons]) функция fn вызывалась с аргументом index. Зарегистрированные функции вызываются при возникновении события в порядке, обратном регистрации. Функции, зарегистрированные при активной функции обратного вызова, не вызываются до следующего события.
ios_base();
Effects: ios_base После построения каждый член имеет неопределенное значение. Члены объекта должны быть инициализированы вызовом basic_ios::init перед первым использованием объекта или перед его уничтожением, в зависимости от того, что произойдет раньше; в противном случае поведение не определено.
~ios_base();
Effects: Уничтожает объект класса ios_base. Вызывает каждую зарегистрированную пару обратного вызова (fn, index) ([ios.base.callback]) как (*fn)(erase_event, *this, index) в то время, когда любая ios_base функция-член, вызываемая изнутри, fn имеет четко определенные результаты.
namespace std { template <class stateT> class fpos { public: // [fpos.members], members stateT state() const; void state(stateT); private; stateT st; // exposition only }; }
Разрешены операции, указанные в таблице 112 . В этой таблице
P относится к экземпляру fpos,
p и q обращайтесь к значениям типа P,
O относится к типу streamoff,
o относится к значению типа streamoff,
sz относится к значению типа streamsize и
i относится к значению типа int.
Выражение | Тип возврата | Оперативный | Утверждение / примечание |
семантика | до / после состояния | ||
P(i) |
p == P(i) примечание: предполагается деструктор. | ||
P p(i); P p = i; | Postconditions: p == P(i). | ||
P(o) | fpos | конвертирует из offset | |
O(p) | streamoff | конвертируется в offset | P(O(p)) == p |
p == q | конвертируемый в bool | == является отношением эквивалентности | |
p != q | конвертируемый в bool | !(p == q) | |
q = p + o p += o | fpos | + компенсировать | q - o == p |
q = p - o p -= o | fpos | - компенсировать | q + o == p |
o = p - q | streamoff | расстояние | q + o == p |
streamsize(o) O(sz) |
streamsize streamoff |
обращает новообращенных |
streamsize(O(sz)) == sz streamsize(O(sz)) == sz |
[ Note: Каждая реализация должна предоставлять перегруженные операторы для fpos объектов, чтобы удовлетворить требованиям [fpos.operations]. Не указано, являются ли эти операторы членами fposглобальных операторов или предоставлены каким-либо другим образом. ] — end note
Операции потока, возвращающие значение типа, traits::pos_type возвращаются P(O(-1)) как недопустимое значение, чтобы сигнализировать об ошибке. Если это значение используется в качестве аргумента в любой istream, ostreamили streambuf члена , который принимает значение типа ,traits::pos_type то поведение этой функции не определено.
namespace std { template <class charT, class traits = char_traits<charT>> class basic_ios : public ios_base { public: using char_type = charT; using int_type = typename traits::int_type; using pos_type = typename traits::pos_type; using off_type = typename traits::off_type; using traits_type = traits; // [iostate.flags], flags functions explicit operator bool() const; bool operator!() const; iostate rdstate() const; void clear(iostate state = goodbit); void setstate(iostate state); bool good() const; bool eof() const; bool fail() const; bool bad() const; iostate exceptions() const; void exceptions(iostate except); // [basic.ios.cons], constructor/destructor explicit basic_ios(basic_streambuf<charT, traits>* sb); virtual ~basic_ios(); // [basic.ios.members], members basic_ostream<charT, traits>* tie() const; basic_ostream<charT, traits>* tie(basic_ostream<charT, traits>* tiestr); basic_streambuf<charT, traits>* rdbuf() const; basic_streambuf<charT, traits>* rdbuf(basic_streambuf<charT, traits>* sb); basic_ios& copyfmt(const basic_ios& rhs); char_type fill() const; char_type fill(char_type ch); locale imbue(const locale& loc); char narrow(char_type c, char dfault) const; char_type widen(char c) const; basic_ios(const basic_ios&) = delete; basic_ios& operator=(const basic_ios&) = delete; protected: basic_ios(); void init(basic_streambuf<charT, traits>* sb); void move(basic_ios& rhs); void move(basic_ios&& rhs); void swap(basic_ios& rhs) noexcept; void set_rdbuf(basic_streambuf<charT, traits>* sb); }; }
explicit basic_ios(basic_streambuf<charT, traits>* sb);
Effects: Создает объект класса basic_ios, присваивая начальные значения его объектам-членам путем вызова init(sb).
basic_ios();
Effects: Создает объект класса basic_ios ([ios.base.cons]), оставляя его объекты-члены неинициализированными. Объект должен быть инициализирован вызовом basic_ios::init до его первого использования или до его уничтожения, в зависимости от того, что произойдет раньше; в противном случае поведение не определено.
~basic_ios();
void init(basic_streambuf<charT, traits>* sb);
Postconditions: Постусловия этой функции указаны в таблице 113.
Элемент | Ценить |
rdbuf() | sb |
tie() | 0 |
rdstate() | goodbit если sb не является нулевым указателем, в противном случае badbit. |
exceptions() | goodbit |
flags() | skipws | dec |
width() | 0 |
precision() | 6 |
fill() | widen(' ') |
getloc() | копия значения, возвращаемого locale() |
iarray | нулевой указатель |
parray | нулевой указатель |
basic_ostream<charT, traits>* tie() const;
Returns: Выходная последовательность, которая tied должна (синхронизироваться) с последовательностью, управляемой буфером потока.
basic_ostream<charT, traits>* tie(basic_ostream<charT, traits>* tiestr);
Requires: Если tiestr не равно нулю, он tiestr не должен быть доступен при просмотре связанного списка связанных объектов потока, начиная с tiestr->tie().
basic_streambuf<charT, traits>* rdbuf() const;
basic_streambuf<charT, traits>* rdbuf(basic_streambuf<charT, traits>* sb);
locale imbue(const locale& loc);
Effects: Вызывает ios_base::imbue(loc) ([ios.base.locales]), а если rdbuf() != 0 то rdbuf()->pubimbue(loc) ([streambuf.locales]).
char narrow(char_type c, char dfault) const;
char_type widen(char c) const;
char_type fill() const;
Returns: Символ, используемый для заполнения (заполнения) преобразования вывода до указанной ширины поля.
char_type fill(char_type fillch);
basic_ios& copyfmt(const basic_ios& rhs);
Effects: Если (this == &rhs) ничего не делает. В противном случае присваивает объектам *this -членам соответствующих объектов-членов rhs следующим образом:
1.вызывает каждую зарегистрированную пару обратных вызовов (fn, index) как (*fn)(erase_event, *this, index);
2.присваивается объектам *this -членам соответствующих объектов-членов rhs, за исключением того, что
rdstate(),, rdbuf()и exceptions() остаются без изменений;
копируется содержимое массивов, на которые указывает pword и iword , а не сами указатели;296 а также
если какие-либо вновь сохраненные значения указателя *this указывают на объекты, хранящиеся вне объекта, rhs и эти объекты уничтожаются при rhs уничтожении, вновь сохраненные значения указателя изменяются, чтобы указывать на вновь созданные копии объектов;
3.вызывает каждую пару обратных вызовов, скопированную из rhs as (*fn)(copyfmt_event, *this, index);
4.звонки exceptions(rhs.exceptions()).
[ Note: Второй проход через пары обратного вызова позволяет pword обнулить скопированное значение, либо глубоко скопировать его референт, либо подсчитать ссылку, либо выполнить другие специальные действия. ] — end note
Postconditions: Постусловия этой функции указаны в таблице 114.
Элемент | Ценить |
rdbuf() | unchanged |
tie() | rhs.tie() |
rdstate() | unchanged |
exceptions() | rhs.exceptions() |
flags() | rhs.flags() |
width() | rhs.width() |
precision() | rhs.precision() |
fill() | rhs.fill() |
getloc() | rhs.getloc() |
void move(basic_ios& rhs);
void move(basic_ios&& rhs);
Postconditions: *this должен иметь состояние, которое rhs было до вызова функции, за исключением тогоrdbuf() , что должен возвращать 0. rhs должен быть в допустимом, но неуказанном состоянии, за исключением того rhs.rdbuf() , что должен возвращать то же значение, что и перед вызовом функции, и rhs.tie() должен возвращать 0.
void swap(basic_ios& rhs) noexcept;
Effects: Состояниями *this и rhs необходимо поменять местами, за исключением того rdbuf() , что они должны возвращать то же значение, что и перед вызовом функции, и rhs.rdbuf() должны возвращать то же значение, что и перед вызовом функции.
void set_rdbuf(basic_streambuf<charT, traits>* sb);
Effects: Связывает basic_streambuf объект, на который указывает sb этот поток, без вызова clear().
Это предполагает бесконечное количество копий, но реализация может отслеживать максимальный элемент массивов, который не равен нулю.
explicit operator bool() const;
bool operator!() const;
iostate rdstate() const;
void clear(iostate state = goodbit);
Postconditions: Если rdbuf() != 0 тогда state == rdstate(); иначе rdstate() == (state | ios_base::badbit).
Effects: Если ((state | (rdbuf() ? goodbit : badbit)) & exceptions()) == 0, вернется. В противном случае функция генерирует объект класса basic_ios::failure, построенный со значениями аргументов, определяемыми реализацией.
void setstate(iostate state);
Effects: Звонки clear(rdstate() | state) (которые могут бросить basic_ios::failure).
bool good() const;
bool eof() const;
bool fail() const;
bool bad() const;
iostate exceptions() const;
void exceptions(iostate except);
Проверка badbit также на fail() историческую практику.
ios_base& boolalpha(ios_base& str);
ios_base& noboolalpha(ios_base& str);
ios_base& showbase(ios_base& str);
ios_base& noshowbase(ios_base& str);
ios_base& showpoint(ios_base& str);
ios_base& noshowpoint(ios_base& str);
ios_base& showpos(ios_base& str);
ios_base& noshowpos(ios_base& str);
ios_base& skipws(ios_base& str);
ios_base& noskipws(ios_base& str);
ios_base& uppercase(ios_base& str);
ios_base& nouppercase(ios_base& str);
ios_base& unitbuf(ios_base& str);
ios_base& nounitbuf(ios_base& str);
ios_base& internal(ios_base& str);
ios_base& left(ios_base& str);
ios_base& right(ios_base& str);
ios_base& dec(ios_base& str);
ios_base& hex(ios_base& str);
ios_base& oct(ios_base& str);
Сигнатура функции dec(ios_base&) может быть вызвана сигнатурой функции, basic_ostream& stream::operator<<(ios_base& (*)(ios_base&)) чтобы разрешить выражениям формы cout << dec изменять флаги формата, хранящиеся в cout.
ios_base& fixed(ios_base& str);
ios_base& scientific(ios_base& str);
ios_base& hexfloat(ios_base& str);
[ Note: Более очевидное использование ios_base::hex для указания шестнадцатеричного формата с плавающей запятой изменило бы смысл существующих четко определенных программ. C ++ 2003 не придает значения комбинации fixed и scientific. ] — end note
ios_base& defaultfloat(ios_base& str);
error_code make_error_code(io_errc e) noexcept;
error_condition make_error_condition(io_errc e) noexcept;
const error_category& iostream_category() noexcept;