問題タブ [ostream]

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 投票する
6 に答える
408285 参照

c++ - ostream の << 演算子を適切にオーバーロードする方法は?

行列演算用に C++ で小さな行列ライブラリを作成しています。ただし、以前はそうではなかったのに、私のコンパイラは文句を言います。このコードは 6 か月間棚に置かれ、その間にコンピューターを debian etch から lenny (g++ (Debian 4.3.2-1.1) 4.3.2) にアップグレードしましたが、同じ g++ を使用する Ubuntu システムでも同じ問題が発生します。 .

私のマトリックスクラスの関連部分は次のとおりです。

そして「実装」:

これは、コンパイラによって表示されるエラーです。

matrix.cpp:459: エラー: 'std::ostream& Math::Matrix::operator<<(std::ostream&, const Math::Matrix&)' は 1 つの引数を取る必要があります

私はこのエラーに少し混乱していますが、6 か月間多くの Java を実行した後、私の C++ は少し錆びてきました。:-)

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

c++ - 独自の ostream/streambuf を作成するにはどうすればよいですか?

教育目的で、ostream とストリーム バッファを作成して実行したいと考えています。

  1. << myVar; を実行するときのエンディアンを修正します。
  2. std:cout を使用したり、ファイルに書き込む代わりに、deque コンテナーに格納します。
  3. << を実行した回数、.write を実行した回数、書き込んだバイト数、flush() を実行した回数などの追加データをログに記録します。しかし、私はすべての情報を必要としません。

オーバーロードを試みましたが、ひどく失敗しました。私はやってみました

私のbasic_stringstream2クラス(私はbasic_stringstreamを私のcppファイルにコピーして貼り付けて変更しました)で、コードはbasic_ostreamを使用し続けました. コードを調べたところ、xsputn をオーバーロードする必要があるようです (このページhttp://www.cplusplus.com/reference/iostream/ostreamには記載されていません) が、他に何がオーバーロードする必要がありますか? クラスを構築するにはどうすればよいですか (継承する必要があるものなど)。

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

c++ - テンプレート化されたostream<<演算子を作成しないコンパイラ

私はクラスを持っており、頭の中で次のように定義されています:

実装ファイルには、次のものがあります。

これはすべてかなりコーシャに見えます。ただし、この演算子(つまり、std :: cout << MyClass())を使用しようとすると、次のリンカーエラーが発生します。

コンパイラが自動的にこれを生成していないことに驚いています...私が間違っていることについて何か提案はありますか?

0 投票する
17 に答える
148829 参照

c++ - ostreamを使用してc++でunsignedcharを16進数として出力するにはどうすればよいですか?

C++で符号なし8ビット変数を操作したいと思います。算術に関する限り、unsigned charまたはトリックを実行します( AFAIKはのエイリアスにすぎないため、これは予想されます。つまり、デバッガーがそれを提示します。uint8_tuint8_tunsigned char

問題は、C ++でostreamを使用して変数を出力すると、charとして扱われることです。私が持っている場合:

その場合、出力は次のようになります。

それ以外の

を使用してみuint8_tましたが、前に述べたように、unsigned charそれはtypedefされているので、同じように動作します。変数を正しく出力するにはどうすればよいですか?

編集:コード全体の多くの場所でこれを行います。印刷するたびにキャストせずにこれを行う方法はありますか?int

0 投票する
5 に答える
26898 参照

inheritance - std :: ostreamから継承する方法は?

私はぐるぐる回っていますが、これに対する簡単な答えを見つけることができません。そして、STLが一般的にそうであるように、それは単純でなければなりません。

std::ostreamからパブリックに継承するMyOStreamを定義したいと思います。ストリームに何かが書き込まれるたびにfoo()を呼び出したいとしましょう。

ostreamのパブリックインターフェイスが非仮想であることを理解していますが、どのように行うことができますか?クライアントがMyOStreamでoperator<<とwrite()およびput()の両方を使用できるようにし、クラスの拡張機能を使用できるようにしたい。

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

c++ - C ++クラスをカスタムostream、sstreamのように動作させます

私はC++クラスを持っており、MyObjectこのデータをosstreamと同じようにフィードできるようにしたいと考えています(ただし、直接sstreamとは異なり、受信データを特別な方法でフォーマットします)。MyObjectが与えられた入力を食べるために演算子をオーバーロードする方法を理解できないようです。

私はそれが欲しいので、供給されるすべてのアイテムは::に囲まれています

したがって、与えられた例では、s = ":Hello::12345"が最終的な結果になるはずです。私の質問は、オブジェクトに、いつ<<somethingでも何かの周りに::を置くことをどのように伝えることができるかです。

これは可能ですか?

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

c++ - これは、左ストリーム演算子をオーバーロードする正しい方法ですか?(C ++)

この関数宣言は私にエラーを与えます:

エラーは次のとおりです。

handは私が作成したクラスであり、displayはタイプのパブリックデータメンバーですchar*

誰かが私が間違っていることを教えてもらえますか?

0 投票する
7 に答える
38405 参照

c++ - std :: ostreamに何かを出力し、std :: ostreamを返す関数?

ostream渡されたに何かを出力し、ストリームを返す関数を次のように記述したいと思います。

このように値を出力し、で行ったように、関数呼び出しを出力演算子チェーンに埋め込むと便利main()です。

ただし、これは機能せず、次のように出力されます。

必要な出力は次のようになります。

どうすればこれを修正できますか?operator<<代わりに定義する必要がありますか?

更新:目的の出力がどうなるかを明確にしました。

UPDATE2:直接印刷するのではなく、関数を使用して、なぜそのような数値を印刷するのか理解できない人もいました。これは単純化された例であり、実際には、関数はではなく複雑なオブジェクトを出力しますint

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

c++ - 文字列をキー、ostream を値としてマップを設定するにはどうすればよいですか?

次の方法で C++ でコンテナを使用しようとしてmapいます: キーは でstring、値は type のオブジェクトですofstream。私のコードは次のようになります。

ただし、上記のコードをコンパイルしようとすると、次のエラーが発生します。

何がうまくいかないのですか?を使用してこれを行うことができない場合map、そのようなキーと値のペアを作成する他の方法はありますか?

注: コードをテストすると、正常にmap<string, int> foo;動作します。