文字のシーケンスから数またはブール値を抽出します。
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
読み取られた値。
戻り値
値が読み取られた後、反復子。
解説
すべてのメンバー関数は do_get (_First、_Last、_Iosbase、_State、_Val)。
最初の仮想で保護されたメンバー関数がいっぱいで、空でない整数の入力フィールドを検証するまでシーケンス_First、[ _Last) で始まる最初に順次要素に一致を試みます。成功すると、型 [long] として対応するこのフィールドを変換し、_Valに格納されます。これは、数値入力フィールドを超える最初の要素を指定する反復子を返します。それ以外の場合、関数は _Val で何も格納しません。_State の ios_base::failbit を設定します。これは有効な整数の入力フィールドの任意のプレフィックスを超える最初の要素を指定する反復子を返します。どちらの場合も、戻り値が lastに等しい場合、関数は _Stateの ios_base::eofbit を設定します。
整数の入力フィールドは char の一連の要素と一致すること、および変換する処理関数で使用されるファイルから同じ規則によって変換されます。char のそのような各要素は単純な、1 対 1 のマッピングによって型 CharType の同等の要素にマップすると仮定されます。同等の走査変換の指定は次のように決定されます:
iosbaseの場合は。フラグ & ios_base::basefield の == ios_base::[10月]は、変換 lo仕様です。
iosbase.flags & ios_base::basefield の == ios_base::[16 進]が、変換 lx仕様の場合は。
iosbase.flags & ios_base::basefield の == 0 仕様が、変換 liの場合は。
それ以外の場合、変換は ld仕様です。
整数の入力フィールドの形式は、呼び出し use_facet <numpunct<Elemによって返される > ロケールのファセットfac により、決定されます (iosbase。getloc)。具体的には、以下の警告があります。
fac。グループ化 は数字は、小数点の左側にグループ化する方法を決定します。
fac。thousands_sep は、小数点の左側に数字のグループを区切るシーケンスを決定します。
facのインスタンスはありません。thousands_sep は数値入力フィールド、制約が適用されるグループには行われません。は、グループの制約でも facによって課しました。grouping が反映され、スキャンの変換が発生する前に区切り記号は削除されます。
2 番目の仮想で保護されたメンバー関数は:
virtual iter_type do_get(iter_type _First, iter_type _Last,
ios_base& _Iosbase, ios_base::iostate& _State,
unsigned long& _Val) const;
1 番目のと同様に動作します。ただし、luと ld 変換の指定を置き換えます。成功すると、_Valで評価するストア unsigned long 型の値と、数値入力フィールドを変換します。
3 番目の仮想で保護されたメンバー関数は:
virtual iter_type do_get(iter_type _First, iter_type _Last,
ios_base& _Iosbase, ios_base::iostate& _State,
double& _Val) const;
1 番目のと同様に動作しますが、完全で、空でない浮動小数点入力フィールドに一致を試みます。fac。decimal_point には、小数桁の整数小数部をシーケンスを決定します。同等の走査の変換の指定子は lfです。
4 番目の仮想で保護されたメンバー関数は:
virtual iter_type do_get(iter_type _First, iter_type _Last,
ios_base& _Iosbase, ios_base::iostate& _State,
long double& _Val) const;
行目同様に動作しますが、同等の走査の変換の指定子は Lfです。
5 番目の仮想で保護されたメンバー関数は:
virtual iter_type do_get(iter_type _First, iter_type _Last,
ios_base& _Iosbase, ios_base::iostate& _State,
void *& _Val) const;
1 番目の同様に動作しますが、同等の走査の変換の指定子は、p. です。
6 番目の仮想で保護されたメンバー関数は:
virtual iter_type do_get(iter_type _First, iter_type _Last,
ios_base& _Iosbase, ios_base::iostate& _State,
bool& _Val) const;
1 番目のと同様に動作しますが、完全で、空でないブール入力フィールドに一致を試みます。_Valで評価するストア bool 型の値に、そのがブール型の入力フィールドの変換に成功した場合は。
ブール入力フィールドには、2 種類のフォームから 1 を受け取ります。iosbaseの場合は。flags & ios_base::boolalpha はです false、整数の入力フィールドと同じです。ただし、変換された値は 0 ( falseの場合) または 1 にする必要があります ( trueの場合)。それ以外の場合は、シーケンスは、いずれかの facと一致する必要があります。falsenamefalse (の場合) または fac。truename ( 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;
}
出力
.
money_get( ) = -1000.56
必要条件
ヘッダー: <locale>
名前空間: std