std::ios_base::pword
Материал из cppreference.com
|
|
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google. Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Щёлкните здесь, чтобы увидеть английскую версию этой страницы. (Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке.) |
<metanoindex/>
<tbody> </tbody> void*& pword( int index ); |
||
Во-первых, выделяет или изменяет размеры частного хранения (динамический массив
void* или другой индексируемой структуры данных), достаточно, чтобы сделать index допустимый индекс, то возвращается ссылка на void* элементом частного хранения с индексом index. Оригинал:
First, allocates or resizes the private storage (dynamic array of
void* or another indexable data structure) sufficiently to make index a valid index, then returns a reference to the void* element of the private storage with the index index. Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Ссылки могут быть признаны недействительными по любой операции на этом
ios_base объекта, в том числе еще один вызов pword(), но сохраненные значения сохраняются, так что чтение pword(index) с тем же индексом позже будет производить то же значение (до следующего вызова copyfmt()). Значение может быть использована для любых целей. Индекс элемента должно быть получено xalloc(), в противном случае столкновения с другими пользователями этой ios_base может произойти. Новые элементы инициализируются NULL.Оригинал:
The reference may be invalidated by any operation on this
ios_base object, including another call to pword(), but the stored values are retained, so that reading from pword(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 NULL.Текст был переведён автоматически используя Переводчик 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.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Параметры
| 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.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Пример
Использование базового класса Pword для хранения выполнения идентификации типов объектов, производных от потока .
Оригинал:
Uses base class pword storage for runtime type identification of derived stream objects.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Запустить этот код
#include <iostream>
template<class charT, class traits = std::char_traits<charT> >
class mystream : public std::basic_ostream<charT, traits>
{
public:
static const int xindex;
mystream(std::basic_ostream<charT, traits>& ostr) :
std::basic_ostream<charT, traits>(ostr.rdbuf())
{
this->pword(xindex) = this;
}
void myfn()
{
*this << "[special handling for mystream]";
}
};
// each specialization of mystream obtains a unique index from xalloc()
template<class charT, class traits>
const int mystream<charT, traits>::xindex = std::ios_base::xalloc();
// This I/O manipulator will be able to recognize ostreams that are mystreams
// by looking up the pointer stored in pword
template<class charT, class traits>
std::basic_ostream<charT,traits>& mymanip(std::basic_ostream<charT,traits>& os)
{
if (os.pword(mystream<charT,traits>::xindex) == &os)
static_cast<mystream<charT,traits>&>(os).myfn();
return os;
}
int main()
{
std::cout << "cout, narrow-character test " << mymanip << '\n';
mystream<char> myout(std::cout);
myout << "myout, narrow-character test " << mymanip << '\n';
std::wcout << "wcout, wide-character test " << mymanip << '\n';
mystream<wchar_t> mywout(std::wcout);
mywout << "mywout, wide-character test " << mymanip << '\n';
}
Вывод:
cout, narrow-character test
myout, narrow-character test [special handling for mystream]
wcout, wide-character test
mywout, wide-character test [special handling for mystream]
См. также
при необходимости изменяет размер закрытого хранилища и предоставляет доступ к элементу типа long по заданному индексу (public функция-элемент) | |
[static] |
возвращает уникальное в масштабах программы целое число, которое является безопасным для использования в качестве индекса для pword() и iword() (public static функция-элемент) |