C++ IOS 庫 - Iword



描述

它用於獲取可擴充套件陣列的整數元素,並返回一個指向型別為 long 的物件的引用,該物件對應於內部可擴充套件陣列中索引 idx。

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

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

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

宣告

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

long& iword (int idx);

引數

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

返回值

對內部可擴充套件陣列中索引為 idx 的元素的引用。此值作為對型別為 long 的物件的引用返回。或者返回一個初始化為 0L 的有效 long&,並且(如果流物件繼承自 basic_ios)設定 badbit 狀態標誌。

異常

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

資料競爭

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

示例

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

#include <iostream>     

std::ostream& Counter (std::ostream& os) {
   const static int index = os.xalloc();
   return os << ++os.iword(index);
}

int main() {
   std::cout << Counter << ": first line\n";
   std::cout << Counter << ": second line\n";
   std::cout << Counter << ": third line\n";
  
   std::cerr << Counter << ": error line\n";
   return 0;
}

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

1: first line
2: second line
3: third line
1: error line
ios.htm
廣告

© . All rights reserved.