std::ios_base::iword
Материал из cppreference.com
![]() |
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google. Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Щёлкните здесь, чтобы увидеть английскую версию этой страницы. (Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке.) |
long& iword( int index ); |
||
Во-первых, выделяет или изменяет размеры частного хранения (динамический массив long или другой индексируемой структуры данных), достаточно, чтобы сделать
index
допустимый индекс, то возвращается ссылка на long элементом частного хранения с индексом index
. Оригинал:
First, allocates or resizes the private storage (dynamic array of long or another indexable data structure) sufficiently to make
index
a valid index, then returns a reference to the long element of the private storage with the index index
. Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Ссылки могут быть признаны недействительными по любой операции на этом
ios_base
объекта, в том числе еще один вызов iword()
, но сохраненные значения сохраняются, так что чтение iword(index) с тем же индексом позже будет производить то же значение (до следующего вызова copyfmt()). Значение может быть использована для любых целей. Индекс элемента должно быть получено xalloc()
, в противном случае столкновения с другими пользователями этой ios_base
может произойти. Новые элементы инициализируются 0.Оригинал:
The reference may be invalidated by any operation on this
ios_base
object, including another call to iword()
, but the stored values are retained, so that reading from iword(index) with the same index later will produce the same value (until the next call to copyfmt()). The value can be used for any purpose. The index of the element must be obtained by xalloc()
, otherwise collisions with other users of this ios_base
may occur. New elements are initialized to 0.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Если распределение не удается, называет std::basic_ios<>::setstate(badbit), которые могут бросить std::basic_ios::failure
Оригинал:
If allocation fails, calls std::basic_ios<>::setstate(badbit) which may throw std::basic_ios::failure
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Содержание |
[править] Заметки
Типичное использование складских iword состоит в передаче информации (например, пользовательские флаги форматирования) из заданных пользователем I / O манипуляторов для определяемых пользователем
operator<<
и operator>>
или пользовательские форматы грани проникнут в стандартные потоки.Оригинал:
Typical use of iword storage is to pass information (e.g. custom formatting flags) from user-defined I/O manipulators to user-defined
operator<<
and operator>>
or to user-defined formatting facets imbued into standard streams.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править] Параметры
index | — | Значение индекса элемента
Оригинал: index value of the element Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
[править] Возвращаемое значение
ссылка на элемент
Оригинал:
reference to the element
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править] Исключения
Может бросить std::ios_base::failure при установке badbit.
Оригинал:
May throw std::ios_base::failure when setting the badbit.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править] Пример
Запустить этот код
#include <iostream> #include <string> struct Foo { static int foo_xalloc; std::string data; Foo(const std::string& s) : data(s) {} }; // allocates the iword storage for use with Foo objects int Foo::foo_xalloc = std::ios_base::xalloc(); // This user-defined operator<< prints the string in reverse if the iword holds 1 std::ostream& operator<<(std::ostream& os, Foo& f) { if(os.iword(Foo::foo_xalloc) == 1) return os << std::string(f.data.rbegin(), f.data.rend()); else return os << f.data; } // This I/O manipulator flips the number stored in iword between 0 and 1 std::ios_base& rev(std::ios_base& os) { os.iword(Foo::foo_xalloc) = !os.iword(Foo::foo_xalloc); return os; } int main() { Foo f("example"); std::cout << f << '\n' << rev << f << '\n' << rev << f << '\n'; }
Вывод:
example elpmaxe example
[править] См. также
при необходимости изменяет размер закрытого хранилища и предоставляет доступ к элементу типа void* по заданному индексу (public функция-элемент) | |
[static] |
возвращает уникальное в масштабах программы целое число, которое является безопасным для использования в качестве индекса для pword() и iword() (public static функция-элемент) |