問題タブ [extraction-operator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 非定数ベクトルである理由要素定数?
a を反復処理するとvector<bool>
、反復子によって逆参照された要素が const であるかのように認識されることがわかります。何故ですか?コンテナーまたは要素の型 (list<bool>
またはなど) を変更vector<short>
し、要素が非 const である。このコードは、私が話していることを示しています。
の場合vector<bool>
、このプログラムは「const」をコンソールに表示します。上部の typedef と manifest 定数をこれら 2 つの組み合わせ以外に変更すると、「non-const」と出力されます。また、行を , に置き換えるiss >> *it
とT v; iss >> v; *it = v;
、期待どおりに機能します。すべての組み合わせが「非定数」と出力されます。
GCC 4.1.2 C++98 (codepad.org 経由) および VS2015 C++14+ (?) でも同じ動作が見られます。
c++ - 演算子を強制する方法>>(C) コンテナーに合わせてオーバーロードしますか?
operator>>()
「ベース」タイプとコンテナタイプのオーバーロードが必要です。これは私がこれまでに持っているものです:
これは、GCC で期待どおりにコンパイルおよび実行されますが、VS2015 ではコンパイルされません。後者>>
は、ステートメント内の演算子をiss >> vi;
最初の基本型のオーバーロードと一致させ、他のコンパイル エラーを引き起こします。GCC および VS2015 でコンパイルされる非コンテナー タイプのテンプレートとコンテナー タイプのテンプレートを作成するにはどうすればよいですかoperator>>()
(コンテナー タイプごとに特化する必要はありません)。
c++ - 文字列を int 関数に強制して文字列全体を消費する
数値を表す文字列を指定して、文字列全体が変換されなかった場合に通知を提供する変換関数に入れたいと思います。
入力用: "12"
:
istringstream::operator>>
出力 12atoi
出力 12stoi
出力 12
入力について"1X"
は、失敗の応答が必要ですが、次のようになります。
istringstream::operator>>
出力 1atoi
出力 1stoi
出力 1
入力の場合"X2"
:
istringstream::operator>>
0 を出力し、エラーフラグを設定しますatoi
出力 0stoi
エラーをスローします
【実例】
入力時にエラー動作を引き起こす方法はあります"1X"
か?
c++ - istream_iterator がゼロ初期化しない
これは最小限で、完全で、検証可能な例です。とにかく、構造体を考えると:
私は次のことができます:
ただし、これにより結果が得られます。
-1215720516 1
2 1
2 3
4 3
4 5
6 5
6 7
8 7
8 9
0 9
をゼロ初期化するFoo
には、次のコードを記述できます。
これにより、m に期待される結果が得られます。
0 1
2 0
0 3
4 0
0 5
6 0
0 7
8 0
0 9
0 0
変数を完全に上書きしない抽出演算子を持つことは大雑把であることを理解しています。これは最初、ここでの私の回答とここでの私の質問に由来しています。私の考えでは、読み取りの合間に変数をゼロ初期化するというより自然な期待がありました。いずれにせよ、変数が読み取り間でゼロ初期化されるように使用することは可能ですか、それとも-loop を使用する必要がありますか?istream_iterator
for
c++ - 標準の抽出演算子 >> は、失敗した場合に引数を変更しないことが保証されていますか?
input_stream >> i;
wherei
が算術型である、例外をスローする、または badbit を設定するなどの呼び出しを行った場合、i
変更されていないことが保証されますか?