次のように使用して、16進形式の文字列から割り当てるdouble foo
ことができるとします。sscanf
sscanf("0XD", "%lg", &foo)
istringstream
しかし、私は同じように振る舞うことができないようです。これらはすべて に 0 を書き込むだけfoo
です:
istringstream("0XD") >> foo
istringstream("0XD") >> hex >> foo
istringstream("D") >> hex >> foo
これは、抽出演算子が次のことを行う必要があることをここで読んだときに特に懸念されます。double
istream
char
前の手順で取得した値が、std::scanf
指定された変換指定子によって解析される入力フィールドで許可されているかどうかがチェックされます。
から 16 進数を読み取れないのはなぜistream
ですか? テストに役立つ場合は、ここにテストコードをいくつか書きました。