建議使用 Visual Studio 2017

basic_ios 類別

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

此樣板類別描述的儲存體和成員函式通用於這兩個輸入資料流 (樣板類別的basic_istream) 和輸出資料流 (樣板類別的basic_ostream) 相依於樣板參數。 (此類別ios_base說明什麼是常見且不相依於樣板參數。)類別的物件basic_ios<class elem,="" class="" traits="">協助控制與項目類型的資料流Elem,其字元特性由類別特性

 
template <class   
Elem  , class   
Traits>  
class basic_ios : public ios_base  

參數

Elem
類型。

Traits
類型為 char_traits 的變數。

類別的物件basic_ios<class elem,="" class="" traits="">儲存︰

建構函式

basic_ios建構 basic_ios 類別。

Typedefs

char_typeElem 樣板參數的同義字。
int_typeTraits::int_type 的同義字。
off_typeTraits::off_type 的同義字。
pos_typeTraits::pos_type 的同義字。
traits_typeTraits 樣板參數的同義字。

成員函式

不正確表示資料流緩衝區的完整性遺失。
清除清除所有錯誤的旗標。
copyfmt將旗標從某個資料流複製到另一個資料流。
eof表示是否已到達資料流的結尾。
例外狀況表示此資料流會擲回哪些例外狀況。
失敗表示無法從資料流擷取有效的欄位。
填滿當此文字比該資料流還窄時,指定或傳回將要使用的字元。
良好表示資料流處於良好狀況。
imbue變更地區設定。
初始化basic_ios 建構函式所呼叫。
移動將所有值從此參數移動至目前物件,但該資料流緩衝區的指標除外。
縮小尋找指定之 char_type 的對等字元。
rdbuf將資料流路由轉送到指定緩衝區。
rdstate讀取旗標的位元狀態。
set_rdbuf指派此資料流緩衝區為此資料流物件的讀取緩衝區。
setstate設定其他旗標。
交換用另一個 basic_ios 物件中的值交換這個 basic_ios 物件中的值。 不會交換資料流緩衝區的指標。
繫結可確保一個資料流在另一個資料流之前先處理。
放大尋找指定字元的對等 char_type

運算子

明確運算子 bool允許使用 basic_ios 物件做為 bool。 自動類型轉換會停用,以避免常見非預期的副作用。
運算子 void *表示資料流是否仍然良好。
運算子 !表示資料流是否沒有錯誤。

標頭︰<>>

命名空間: std

指出遺失的資料流的緩衝區完整性

bool bad() const;

傳回值

true如果rdstate & badbit為非零,否則false

如需有關badbit,請參閱ios_base:: iostate

範例

  
// basic_ios_bad.cpp  
// compile with: /EHsc  
#include <iostream>  
  
int main( void )  
{  
using namespace std;  
bool b = cout.bad( );  
cout << boolalpha;  
cout << b << endl;  
  
b = cout.good( );  
cout << b << endl;  
}  
  

建構 basic_ios 類別。

 
explicit basic  
_  
ios(
    basic 
_  
streambuf<
_  
Elem,  
_  
Traits>* _Sb);

basic_ios();

參數

_Sb
標準儲存的輸入或輸出元素的緩衝區。

備註

第一個建構函式會初始化其成員的物件呼叫init(_ Sb)。 第二個 (受保護) 的建構函式會保留其成員未初始化的物件。 稍後呼叫init它安全地終結之前必須初始化物件。

範本參數的同義字Elem

 
typedef Elem char  
_  
type;  

清除所有錯誤的旗標。

 
void clear(iostate state = goodbit, bool reraise = false);

 
void clear(io_state state);

參數

state (選擇性)
清除所有旗標之後您想要設定的旗標。 預設值為 goodbit

reraise (選擇性)
指定是否應該重新引發例外狀況。 預設值為 false (將不重新引發例外狀況)。

備註

旗標為goodbitfailbiteofbit,和badbit。 測試這些旗標與錯誤eof,和失敗

成員函式會以下列項目取代預存的資料流狀態資訊:

state|(rdbuf != 0 goodbit : badbit)

如果state ** & **例外狀況為非零值,它則會擲回的物件類別的失敗

範例

請參閱rdstategetline如需使用範例清除

將旗標從某個資料流複製到另一個資料流。

 
basic_ios<Elem, Traits>& copyfmt(
const basic_ios<Elem, Traits>& right);

參數

right
您想要複製其旗標資料流。

傳回值

複製旗標的資料流的物件。

備註

成員函式報告回呼 event erase_event。 然後將複製從right*這填滿字元、 繫結指標和格式設定資訊。 再變更例外狀況的遮罩,它會報告回呼事件 copyfmt_event。 如果在複製完成後狀態 i例外狀況會有效率地呼叫是非零值,此函式清除與引數rdstate。 它會傳回*這

範例

  
// basic_ios_copyfmt.cpp  
// compile with: /EHsc  
#include <iostream>  
#include <fstream>  
  
int main( )  
{  
using namespace std;  
ofstream x( "test.txt" );  
int i = 10;  
  
x << showpos;  
cout << i << endl;  
cout.copyfmt( x );  
cout << i << endl;  
}  
  

表示是否已到達資料流的結尾。

bool eof() const;

傳回值

true如果已經到達資料流末端,false否則。

備註

成員函式傳回true如果rdstate & eofbit為非零值。 如需有關eofbit,請參閱ios_base:: iostate

範例

  
// basic_ios_eof.cpp  
// compile with: /EHsc  
#include <iostream>  
#include <fstream>  
  
using namespace std;  
  
int main( int argc, char* argv[] )  
{  
fstream   fs;  
int n = 1;  
fs.open( "basic_ios_eof.txt" );   // an empty file  
cout << boolalpha  
cout << fs.eof() << endl;  
fs >> n;   // Read the char in the file  
cout << fs.eof() << endl;  
}  
  

表示此資料流會擲回哪些例外狀況。

 
iostate exceptions() const;

 
void exceptions(iostate _Newexcept);

void exceptions(io_state _Newexcept);

參數

_Newexcept
您想要擲回例外狀況的旗標。

傳回值

指定的旗標是目前要擲回例外狀況的資料流。

備註

第一個成員函式會傳回遮罩,預存的例外狀況。 第二個成員函式存放區_Except遮罩例外狀況並傳回其先前儲存的值。 請注意,儲存新的例外狀況遮罩可能擲回的例外狀況,就像呼叫清除( rdstate )。

範例

  
// basic_ios_exceptions.cpp  
// compile with: /EHsc /GR  
#include <iostream>  
  
int main( )  
{  
using namespace std;  
  
cout << cout.exceptions( ) << endl;  
cout.exceptions( ios::eofbit );  
cout << cout.exceptions( ) << endl;  
try  
{  
cout.clear( ios::eofbit );   // Force eofbit on  
}  
catch ( exception &e )  
{  
cout.clear( );  
cout << "Caught the exception." << endl;  
cout << "Exception class: " << typeid(e).name()  << endl;  
cout << "Exception description: " << e.what() << endl;  
}  
}  
  

  
0  
1  
Caught the exception.  
Exception class: class std::ios_base::failure  
Exception description: ios_base::eofbit set   

表示無法從資料流擷取有效的欄位。

bool fail() const;

傳回值

true如果rdstate & (badbit|failbit)是零,否則false

如需有關failbit,請參閱ios_base:: iostate

範例

  
// basic_ios_fail.cpp  
// compile with: /EHsc  
#include <iostream>  
  
int main( void )  
{  
using namespace std;  
bool b = cout.fail( );  
cout << boolalpha;  
cout << b << endl;  
}  
  

當此文字比該資料流還窄時,指定或傳回將要使用的字元。

 
char  
_  
type fill() const;

 
char  
_  
type fill(char 
_  
type _Char);

參數

_Char
您要做為填滿字元的字元。

傳回值

目前的填滿字元。

備註

第一個成員函式會傳回儲存的填滿字元。 第二個成員函式存放區_Char填滿字元和傳回其先前儲存的值。

範例

  
// basic_ios_fill.cpp  
// compile with: /EHsc  
#include <iostream>  
#include <iomanip>  
  
int main( )  
{  
using namespace std;  
  
cout << setw( 5 ) << 'a' << endl;  
  
cout.fill( 'x' );  
cout << setw( 5 ) << 'a' << endl;  
  
cout << cout.fill( ) << endl;  
}  
  

  
a  
xxxxa  
x   

表示資料流處於良好狀況。

bool good() const;

傳回值

true如果rdstate == goodbit (沒有狀態旗標設定),否則false

如需有關goodbit,請參閱ios_base:: iostate

範例

請參閱basic_ios:: bad的使用範例good

變更地區設定。

 
locale imbue(const locale& _Loc);

參數

_Loc
地區設定字串。

傳回值

先前的地區設定。

備註

如果rdbuf不是 null 指標,該成員函式呼叫

rdbuf-> pubimbue(_ Loc)

在任何情況下,它會傳回ios_base:: imbue(_ Loc)。

範例

  
// basic_ios_imbue.cpp  
// compile with: /EHsc  
#include <iostream>  
#include <locale>  
  
int main( )  
{  
using namespace std;  
  
cout.imbue( locale( "french_france" ) );  
double x = 1234567.123456;  
cout << x << endl;  
}  
  

Basic_ios 建構函式呼叫。

 
void init(
basic_streambuf<Elem,Traits>* _Sb,  
bool _Isstd = false);

參數

_Sb
標準儲存的輸入或輸出元素的緩衝區。

_Isstd
指定這是否為標準的資料流。

備註

成員函式將值儲存的所有成員物件,以便︰

同義字traits_type::int_type

typedef typename traits_type::int_type int_type;  

將所有值從此參數移動至目前物件,但該資料流緩衝區的指標除外。

 
void move(basic_ios&& right);

參數

right
ios_base移動中的值物件。

備註

受保護的成員函式移動中儲存的值right*this除了儲存stream buffer pointer,這並不會變更在right而設定為 null 指標中*this。 儲存tie pointer設為 null 指標在right

尋找指定之 char_type 的對等字元。

 
char narrow(
char_type _Char,  
char _Default = '\0') const;

參數

_Char
要進行轉換的 char

_Default
char想傳回如果找到沒有對等用法。

傳回值

對等char到給定char_type

備註

The member function returns use_facet<Â ctype< E> >( getloc( ) ). narrow( _Char, _Default).

範例

  
// basic_ios_narrow.cpp  
// compile with: /EHsc  
#include <ios>  
#include <iostream>  
#include <wchar.h>  
  
int main( )  
{  
using namespace std;  
wchar_t *x = L"test";  
char y[10];  
cout << x[0] << endl;  
wcout << x << endl;  
y[0] = wcout.narrow( x[0] );  
cout << y[0] << endl;  
}  
  

同義字traits_type::off_type

typedef typename traits_type::off_type off_type;  

表示資料流是否仍然良好。

 operator void *() const;

傳回值

運算子會傳回 null 指標才失敗

範例

  
// basic_ios_opgood.cpp  
// compile with: /EHsc  
#include <iostream>  
  
int main( )  
{  
using namespace std;  
cout << (bool)(&cout != 0) << endl;   // Stream is still good  
}  
  

表示資料流是否沒有錯誤。

 
bool operator!() const;

傳回值

傳回失敗

範例

  
// basic_ios_opbad.cpp  
// compile with: /EHsc  
#include <iostream>  
  
int main( )  
{  
using namespace std;  
cout << !cout << endl;   // Stream is not bad  
}  
  

允許使用 basic_ios 物件做為 bool。 自動類型轉換會停用,以避免常見非預期的副作用。

explicit operator bool() const;

備註

運算子會傳回值轉換成falsefail``()。 傳回的型別可以轉換成只bool、 不void *或其他已知的純量型別。

同義字traits_type::pos_type

typedef typename traits_type::pos_type pos_type;  

將資料流路由轉送到指定緩衝區。

 
basic_streambuf<Elem, Traits> *rdbuf() const;

 
basic_streambuf<Elem, Traits> *rdbuf(
basic_streambuf<Elem, Traits>* _Sb);

參數

_Sb
資料流。

備註

第一個成員函式會傳回儲存的資料流的緩衝區指標。

第二個成員函式存放區_Sb中儲存的資料流緩衝區的指標,並傳回先前儲存的值。

範例

  
// basic_ios_rdbuf.cpp  
// compile with: /EHsc  
#include <ios>  
#include <iostream>  
#include <fstream>  
  
int main( )  
{  
using namespace std;  
ofstream file( "rdbuf.txt" );  
streambuf *x = cout.rdbuf( file.rdbuf( ) );  
cout << "test" << endl;   // Goes to file  
cout.rdbuf(x);  
cout << "test2" << endl;  
}  
  

test2  

讀取旗標的位元狀態。

 
iostate rdstate() const;

傳回值

儲存的資料流狀態資訊。

範例

  
// basic_ios_rdstate.cpp  
// compile with: /EHsc  
#include <iostream>  
#include <fstream>  
using namespace std;  
  
void TestFlags( ios& x )  
{  
cout << ( x.rdstate( ) & ios::badbit ) << endl;  
cout << ( x.rdstate( ) & ios::failbit ) << endl;  
cout << ( x.rdstate( ) & ios::eofbit ) << endl;  
cout << endl;  
}  
  
int main( )  
{  
fstream x( "c:\test.txt", ios::out );  
x.clear( );  
TestFlags( x );  
x.clear( ios::badbit | ios::failbit | ios::eofbit );  
TestFlags( x );  
}  
  

  
0  
0  
0  
  
4  
2  
1   

設定其他旗標。

 
void setstate(iostate _State);

參數

_State
若要設定的其他旗標。

備註

有效率地呼叫成員函式清除(_狀態|rdstate).

範例

  
// basic_ios_setstate.cpp  
// compile with: /EHsc  
#include <ios>  
#include <iostream>  
using namespace std;  
  
int main( )  
{  
bool b = cout.bad( );  
cout << b << endl;   // Good  
cout.clear( ios::badbit );  
b = cout.bad( );  
// cout.clear( );  
cout << b << endl;   // Is bad, good  
b = cout.fail( );  
cout << b << endl;   // Not failed  
cout.setstate( ios::failbit );  
b = cout.fail( );  
cout.clear( );  
cout << b << endl;   // Is failed, good  
return 0;  
}  
  

指派此資料流緩衝區為此資料流物件的讀取緩衝區。

 
void set_rdbuf(
basic_streambuf<Elem, Tr>* strbuf)  

參數

strbuf
要成為讀取的緩衝區的資料流緩衝區。

備註

受保護的成員函式存放區strbufstream buffer pointer。它不會呼叫clear

可確保一個資料流在另一個資料流之前先處理。

 
basic_ostream<Elem, Traits> *tie() const;

 
basic_ostream<Elem, Traits> *tie(
basic_ostream<Elem, Traits>* str);

參數

str
資料流。

傳回值

第一個成員函式傳回預存的繫結的指標。 第二個成員函式存放區str在繫結指標並傳回其先前儲存的值。

備註

tie使上一個資料流的作業發生在資料流上的作業完成之後,會導致同步處理,兩個資料流。

範例

在此範例中,只要 cin 至 cout,一定會"輸入的數字:"字串將會移到在數字前主控台本身取自 cin。 這可避免的 「 輸入的數字:"字串仍然位於緩衝區讀取時數、 使用者,讓我們確定實際上有回應的一些提示。 根據預設,cin 和 cout 會繫結。

  
#include <ios>  
#include <iostream>  
  
int main( )  
{  
using namespace std;  
int i;  
cin.tie( &cout );  
cout << "Enter a number:";  
cin >> i;  
}  
  

範本參數的同義字特性

 
typedef Traits traits  
_  
type;  

尋找對等char_type到給定char

 
char_type widen(char _Char) const;

參數

_Char
要轉換的字元。

傳回值

尋找對等char_type到給定char

備註

成員函式傳回use_facet< ctype< E> > ( getloc)。 widen( _Char).

範例

  
// basic_ios_widen.cpp  
// compile with: /EHsc  
#include <ios>  
#include <iostream>  
#include <wchar.h>  
  
int main( )  
{  
using namespace std;  
char *z = "Hello";  
wchar_t y[2] = {0,0};  
cout << z[0] << endl;  
y[0] = wcout.widen( z[0] );  
wcout << &y[0] << endl;  
}  
  

用另一個 basic_ios 物件中的值交換這個 basic_ios 物件中的值。 不過,不會交換資料流緩衝區的指標。

 
void swap(basic_ios&& right);

參數

right
basic_ios用來交換值的物件。

備註

受保護的成員函式交換中儲存的值right*this除了儲存stream buffer pointer

C + + 標準程式庫中的執行緒安全
iostream 程式設計
iostreams 慣例

顯示: