C++ IOS 庫 - Pword



描述

它用於獲取可擴充套件陣列的指標元素,並返回對對應於內部可擴充套件陣列中索引 idx 的 void* 型別物件的引用。

如果 idx 是新元素的索引,並且內部可擴充套件陣列不夠長(或尚未分配),則該函式會將其擴充套件(或分配)儘可能多的元素,這些元素初始化為空指標。

保證返回的引用至少在對流物件執行另一個操作之前有效,包括對 pword 的另一次呼叫。一旦執行了另一個操作,引用可能失效,儘管隨後對該函式使用相同的 idx 引數的呼叫會返回對內部可擴充套件陣列中相同值的引用。

內部可擴充套件陣列是 long 型別物件(如果使用成員 iword 訪問)或 void* 型別物件(如果使用成員 pword 訪問)的通用陣列。庫可以用多種方式實現此陣列:iword 和 pword 可能共享或不共享唯一的陣列,甚至可能根本不是陣列,而是其他一些資料結構。

宣告

以下是 ios_base::pword 函式的宣告。

void*& pword (int idx);

引數

idx − 內部可擴充套件陣列的元素索引值,某些實現期望 idx 是成員 xalloc 之前返回的值。

返回值

此值作為對 void* 型別物件的引用返回。

異常

基本保證 − 如果丟擲異常,則流處於有效狀態。

資料競爭

可能會修改流物件。返回的值也可能用於修改它。對同一流物件的併發訪問可能會導致資料競爭。

示例

下面的示例解釋了 ios_base::pword 函式。

#include <iostream>     

const int name_index = std::ios::xalloc();

void SetStreamName (std::ios& stream, const char* name) {
   stream.pword(name_index) = const_cast<char*>(name);
}

std::ostream& StreamName (std::ostream& os) {
   const char* name = static_cast<const char*>(os.pword(name_index));
   if (name) os << name;
   else os << "(unknown)";
   return os;
}

int main() {
   SetStreamName(std::cout, "standard output stream");
   SetStreamName(std::cerr, "standard error stream");
   std::cout << StreamName << '\n';
   std::cerr << StreamName << '\n';
   std::clog << StreamName << '\n';
   return 0;
}

讓我們編譯並執行上面的程式,這將產生以下結果:

standard output stream
standard error stream
(unknown)
ios.htm
廣告
© . All rights reserved.