問題タブ [iostream]

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.

0 投票する
2 に答える
1061 参照

c++ - std :: ostreamは、初めて使用されたときにconstchar*を正しくフォーマットしません

私はstd::streambufロギングシステムの一部としてカスタムを書いてきました。ただし、ストリームからの最初の出力が正しくフォーマットされていないという問題があります。

streambufこれは、カスタムやostreamクラスを使用しない縮小されたテストケースです。

g ++を使用してこれをコンパイルします:

最初の文字列リテラル( "test")は汎用ポインターとしてフォーマットされています(文字列のアドレスは16進数で出力されます)が、2番目の文字列リテラルは正しくフォーマットされていることに注意してください。

私が考えることができる唯一のことは、そのstd::ostreamように新しく構築されたものを直接使用することは無効であるということです(つまり、それを変数に入れずに)。この場合、何がそれを無効にするのかを正確に知りたいと思います(特に、iostreamとは関係がなく、評価の順序やコンストラクターなどとの相互作用とは関係がないと思います)。それが問題ではない場合、それでは何ですか?

0 投票する
6 に答える
25980 参照

c++ - std::istreamからstd::stringに直接読み取る

一時バッファを作成せずに、既知のバイト数を直接std :: stringに読み込む方法はありますか?

たとえば、現在私はそれを行うことができます

0 投票する
3 に答える
598 参照

c++ - >>演算子のC++オーバーロード

ストリーム抽出演算子をオーバーロードする必要があります。これを行うには、ユーザーがプロンプトで「iamastring」などの文字列を入力できるようにします。次に、オペレーターが文字列から各文字を抽出し、空白かどうか、空白でないかどうかをテストします。文字配列内にあり、オブジェクトに渡されます。

@Chipetal。たとえば、出力画面に何も出力されるとは思っていません。代わりに、ユーザーが文字列を入力してEnterキーを押すと、新しいメニュー選択を入力するように再度求められます。現在のところ、ユーザーが文字列を入力するとEnterキーが押され、「不正な読み取りエラー」が表示され、プロンプトが戻って新しい入力を待ちます。

0 投票する
2 に答える
6538 参照

c++ - file_descriptor_source (boost::iostreams) またはファイルからの istream

プログラムの入力に対して次のようなことをする必要があります。

どちらの場合も _popen を使用し、既に解凍されている場合はファイルを stdout にコピーするという 1 つの解決策がありますが、これはあまりエレガントではないようです。

これがCと比較してどれほど難しいかはおかしいです-標準ライブラリはそれを見逃していたと思います。今、不可解なboost::iostreamsのドキュメントで迷っています。誰かがその方法を知っていれば、サンプルコードは素晴らしいでしょう。

0 投票する
2 に答える
1773 参照

c++ - 関数と出力でifstream入力を渡す方法は? C++

例えば:

関数 translateStream の書き方 void translateStream(XXXX input, YYYY output)? 入力と出力の型は何ですか?

ありがとう

0 投票する
2 に答える
4278 参照

c++ - getline()を使用してfstreamからchar配列を取得できますか

文字列を処理するためにchar配列をすでに使用しているプログラムに新しい(fstream)関数を追加したいと思います。問題は、以下のコードが文字列を生成することです。これを機能させるために考えることができる唯一の方法は、文字列をcharごとに新しいchar配列にコピーし、これらをに渡す中間関数を使用することです。プログラム内の関数を使用して結果を取得し、結果を文字ごとに文字列にコピーします。

確かに(うまくいけば)もっと良い方法があるはずですか?

ありがとう!

translateWord func:

0 投票する
1 に答える
1246 参照

c++ - C++で「デフォルト」ストリーム挿入演算子を作成するには?

テンプレート化されたコンテナー クラスであるという点で、boost::any に似たクラスがあります。含まれている値を文字列に書き込むメソッドが欲しいです。ただし、含まれている型がストリーム挿入演算子を提供しない場合、コンパイルに失敗するのではなく、メソッドがデフォルトの文字列を返すようにしたいと考えています。以下は私がやってきた限りであり、私がやろうとしていることを明確にする必要があります:

これはかなりうまく機能しますが、いくつかの注意事項があります。たとえば、クラスにオーバーロードされた挿入演算子を実際に提供したい場合、その演算子はクラスと同じ名前空間にあるか、考慮される W 名前空間にある必要があります。

また、char や std::string など、メンバー以外の std::operator<< を持つ型にも問題があります。T がこれらの型の 1 つである場合、oss << t_上記の行はあいまいになります。これは、W 名前空間内にこれらの型のオーバーロードを追加することで回避できます。次に例を示します。

私の質問は、これよりも良い方法を見つけた人はいますか? std::string のようなものに独自のオーバーロードを追加する必要があるのはなぜですか? これはすべて標準に従ってサポートされていますか、それとも非標準の動作を利用していますか? (g++ 4.3.3 でテストしています)

0 投票する
3 に答える
10560 参照

c++ - C++ cin.fail() の質問

次のコードを実行して数値を入力すると、正常に動作します。しかし、文字を入力すると、プログラムは無限ループに入り、「数字を入力してください (終了するには 0): cin に失敗しました」と表示されます。

私の意図は、cin fail ケースを処理し、ユーザーに再度プロンプトを表示することでした。