共用方式為


num_get::get

從字元順序擷取數值或布林值。

iter_type get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    bool& _Val
) const;
iter_type get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    unsigned short& _Val
) const;
iter_type get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    unsigned int& _Val
) const;
iter_type get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    long& _Val
) const;
iter_type get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    unsigned long& _Val
) const;
iter_type get(
    iter_type _First, 
    iter_type _Last,
    ios_base& _Iosbase, 
    ios_base::iostate& _State,
    long long& _Val
) const;
iter_type get(
    iter_type _First, 
    iter_type _Last,
    ios_base& _Iosbase, 
    ios_base::iostate& _State,
    unsigned long long& _Val
) const;
iter_type get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    float& _Val
) const;
iter_type get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    double& _Val
) const;
iter_type get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    long double& _Val
) const;
iter_type get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    void *& _Val
) const;

參數

  • _First
    字元範圍的起始讀取數。

  • _Last
    字元範圍的結尾讀取數。

  • _Iosbase
    轉換使用旗標的 ios_base

  • _State
    failbit 狀態 (請參閱 ios_base::iostate) 將會失敗。

  • _Val
    已讀取的值。

傳回值

Iterator,在讀取值之後。

備註

所有成員函式會傳回 do_get(_First、 _Last、 _Iosbase、 _State, _Val)。

第一個虛擬 protected 成員函式會嘗試比對時序元件開始先序列 [_First, _Last),直到辨識完成,非空的整數輸入欄位。 如果成功,則在 _Val轉換這個欄位設定為其對等的值做為型別 long 並儲存結果。 它會將數字輸入欄位之外的 Iterator 第一個項目。 否則,函式則在 _Val 不儲存並將 _State 的 ios_base::failbit 。 它會將有效整數輸入欄位的所有前置之外 Iterator 第一個項目。 在任何情況下,,如果傳回值等於 last, _State中的函式會設定 ios_base::eofbit

整數輸入欄位由掃描函式所用的相同規則轉換為符合和轉換一系列 char 項目從檔案。 每一個這樣的 char 項目依簡單,一對一對應假設對應到型別 CharType 的一個對等項目。 判斷對等掃描轉換規格如下:

  • 如果 iosbase旗標。 &ios_base::basefield == ios_base::10 月,轉換規格 lo

  • 如果 iosbase.flags &ios_base::basefield == ios_base::六個,轉換規格 lx

  • 如果 iosbase.flags &ios_base::basefield == 0,轉換規格是 li

  • 否則,轉換規格 ld

地區設定 facet進一步取決於整數輸入欄位的格式呼叫傳回的facuse_facet <numpunct<Elem>(iosbasegetloc)。 尤其是:

  • fac群組 判斷數字如何在任何小數點左邊的群組。

  • facthousands_sep 判斷在任何小數點左邊分隔數字群組的序列。

如果 fac沒有執行個體。thousands_sep 在數字輸入欄位,加上條件約束的未分組結果。 否則,所有群組條件約束由 fac施加了。grouping 會強制執行,而分隔符號在掃描轉換發生之前被移除。

第二個虛擬 protected 成員函式:

virtual iter_type do_get(iter_type _First, iter_type _Last,
    ios_base& _Iosbase, ios_base::iostate& _State,
        unsigned long& _Val) const;

一般作業的第一個相同,不過,它是 lu取代 ld 的轉換規格。 如果成功,則 _Val值為轉換數值輸入欄位為型別 unsigned long 的值和存放區。

第三個虛擬 protected 成員函式:

virtual iter_type do_get(iter_type _First, iter_type _Last,
    ios_base& _Iosbase, ios_base::iostate& _State,
        double& _Val) const;

一般作業的第一個相同,不過,它會嘗試比對完成,非空的浮點輸入欄位。 facdecimal_point 判斷小數位數分隔整數數字的序列。 對等掃描轉換規範是 lf

第四個虛擬 protected 成員函式:

virtual iter_type do_get(iter_type _First, iter_type _Last,
    ios_base& _Iosbase, ios_base::iostate& _State,
        long double& _Val) const;

產生相同的行為,三,除了對等掃描轉換規範是 Lf

第五個虛擬 protected 成員函式:

virtual iter_type do_get(iter_type _First, iter_type _Last,
    ios_base& _Iosbase, ios_base::iostate& _State,
        void *& _Val) const;

產生相同的行為,第一個,除了對等掃描轉換規範為 p。

第六個虛擬 protected 成員函式:

virtual iter_type do_get(iter_type _First, iter_type _Last,
    ios_base& _Iosbase, ios_base::iostate& _State,
        bool& _Val) const;

一般作業的第一個相同,不過,它會嘗試比對完成,非空的布林輸入欄位。 如果成功在 _Val值所轉換的布林值輸入欄位為型別 bool 的值和存放區。

一個布林值輸入欄位兩種形式中的一個。 如果 iosbaseflags &ios_base::boolalphafalse,這是一個樣式做為整數輸入欄位,但是有一點例外,就是要轉換的值必須是 0 ( false) 或 1 ( true)。 否則,序列必須符合任一 facfalsename ( false),或者 factruename ( true)。

範例

// num_get_get.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
using namespace std;
int main( )
{
   locale loc( "german_germany" );

   basic_stringstream<char> psz, psz2;
   psz << "-1000,56";

   ios_base::iostate st = 0;
   long double fVal;
   cout << use_facet <numpunct <char> >(loc).thousands_sep( ) << endl;


   psz.imbue( loc );
   use_facet <num_get <char> >
   (loc).get( basic_istream<char>::_Iter( psz.rdbuf( ) ),
           basic_istream<char>::_Iter(0), psz, st, fVal );

   if ( st & ios_base::failbit )
      cout << "money_get( ) FAILED" << endl;
   else
      cout << "money_get( ) = " << fVal << endl;
}

Output

.
money_get( ) = -1000.56

需求

標題: <地區設定>

命名空間: std

請參閱

參考

num_get 類別