問題タブ [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 投票する
1 に答える
1442 参照

c++ - std :: istreamがstreambufの所有権を引き継がないのはなぜですか?

私は、CRIミドルウェアのROFSのようなビデオゲーム用のある種の仮想ファイルシステムライブラリを書いています(ウィキペディアを参照)。ライブラリでの私の意図は、実行可能ファイルに埋め込まれたデータ、メディア、ローカルユーザーのハードドライブ(設定、ゲームファイルの保存など)に埋め込まれたデータを保存する、開発したゲームのリソースにアクセスする自然な手段を提供することです。 。

このようなリソースへのアクセスは、次のような電話をかけるのと同じくらい簡単である必要があります。

実際のやり方は実際には異なり、バックグラウンドの読み込みに別の抽象化レイヤーが使用されますが、ここでは重要ではありません。

私が知りたいのは、に関連付けられているが破棄されたときに削除されないことを考慮して、それをどのように返すことができるかauto_ptr<>(またはunique_ptr<>、選択した場合)です。std::streambuf<>std::[i/o]stream<>

std::[i/o]stream<>コンストラクターは所有権の転送セマンティクスを提示せず、ApacheのSTDCXX参照は所有権のトランサーについて言及していないため、構築時に渡されたstreambufに対する所有権を想定しないことを検討しています(私が見つけたstdlib参照もありません)インターネット上で)。

どのような選択肢がありますか?共有ポインターを返し、FSlibマネージャーが共有ポインターの一意のコピーを保持するまでそれを監視し続けることもできます。その場合、その一意のコピーとstreambufが破棄されます。図書館の組織モデルを考えると、これは実用的ですが、これはあまりエレガントでも効率的でもありません。

Boost.Iostreamsを見てみましたが、ストリーム自体のデバイスタイプがそのタイプに強く関連付けられているため、状況はさらに悪化しているようです(ストリームのデバイスはテンプレートパラメーターで定義する必要があります) )。この問題により、Boost.Iostreamsをライブラリで使用できなくなったようです。これは、ストリームをシームレスに使用して実行可能ファイル自体の内部にあるファイルを開くことができるように、ストリームの具体的な「ソース/シンク」実装を抽象化する必要があるためです。たとえば、システムのファイルシステムのファイル内、またはアーカイブタイプのファイル内。

これらの問題を処理するコンテナクラスを作成することもできますが、もっとクリーンに実行したいと思います(つまり、すでにストリームを返すだけです。必要なのはそれだけです!;)。

提案?

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

java - JOGLでのテクスチャ読み込み

プログラムでテクスチャとして使用するために bmp 画像を読み込もうとしてきましたC++ のテクスチャ ローダー コードに基づいたこのコードを使用して、IOStreamクラスを使用して写真のピクセルを読み取るように拡張しました。DataInputStream

および IOStream コード:

そして呼び出し:

デバッグ後、この行になると次のことがわかりました。

IOExeptionこれはどういうDispatchException意味ですか?どうすれば解決できますか?

私がしようとしました:

  1. \\\/を使用//
  2. 写真のパスを変更し、すべてのパスをc:\からphotoname.bmp
  3. のような数字を使用して写真の名前を変更します1.bmp

どれも機能しませんでした。

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

c++ - ReadFile、WriteFile、fprintf などで c++ iostream を使用するとよいのはいつですか?

ReadFile、WriteFile などの Windows 関数や fprintf の代わりに、C++ でストリームを使用する方が非常に簡単であることがわかりました。ストリームを使用するのが良くない場合 いつストリームを使用するのが良いですか? ストリームを使用しても安全ですか? 多くのプログラマーがストリームを使用しないのはなぜですか?

これは私がいつも疑問に思っていることであり、おそらくあなたは知恵を注ぐことができます.

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

c++ - 重大なパフォーマンスの低下が発生するにもかかわらず、endl が "\n" の同義語として使用されるのはなぜですか?

このプログラム:

次のようなタイミングで:

実行には実時間で 15.4 秒かかります。出力行を次のように置き換えると、次のcout << i << ": " << msg << endl;ようになります。

ご覧のとおり、実行時間は 2 倍以上になり、プログラムは OS で最小限の時間を費やすことから、OS で費やす時間のほぼ半分になります。

プログラムの両方のバージョンの出力は同一であり、すべてのプラットフォームで同一の出力が得られることが標準によって保証されています。

これを考えると、なぜ人々endlは同義語として使い続けるのですか?'\n'?

編集: 明らかでない場合、この質問は主要な質問であることを意図しており、説明目的でここにあります。パフォーマンスのペナルティが存在する理由を知っています。

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

c++ - C++: cin を ifstream 変数に割り当てますか?

stdin「-」のファイル名で指定される一般的なstdioイディオムを知っています。

ifstreamインスタンスでこれを行う最良の方法は何ですか? クラスの一部として asを持つコードを少し受け取りました。ifstream次のようなコードを追加して、同等のことを行いたいと思います。

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

c++ - << を使用して文字列を作成する iostream

<< を使用して文字列 ala を作成する方法

0 投票する
4 に答える
4325 参照

c++ - C++-std::ostreamを関数に渡す

私はC++の小さなデバッグインライン関数を考えました:

これは私がそれをどのように使いたかったかの例です:

ただし、計画どおりに機能しません。詳細レベルが関数に渡されたデバッグレベルよりも高いか等しい場合にのみメッセージを出力したかったのですが、デバッグレベルに関係なく毎回出力されるようで、データは残ります。 coutバッファ内。今のところ、この関数は私が最近持っていた最良のアイデアではないと思いますが、それでもcout、cerrなどに関連するバッファーをクリアする方法があるかどうか知りたいです。この種の関数を正しく機能させることは可能ですか?

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

c++ - std::endl のオーバーロード処理?

次のようにクラスを定義したいMyStream

出力を与える

基本的に、「[何とか]」を先頭に挿入し、終了 std::endlしないたびに挿入したいですか?

ここでの問題はロジック管理ではなく、 の処理の検出と過負荷ですstd::endl。これを行うエレガントな方法はありますか?

ありがとう!

編集: ロジック管理に関するアドバイスは必要ありません。の印刷を検出/過負荷にする方法を知る必要がありstd::endlます。

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

c++ - C ++でジェネリックistreamを宣言する

実行時にプログラムに渡されるパラメーターに応じて、ifstream または cin から読み込むプログラムを作成する必要があります。

私は次のことを計画していました:

ただし、istream は保護されており、istream を宣言することはできません。そのようなジェネリックをストリームで宣言する方法はありますか?

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

c# - TFS SDK を使用して TFS からすべてのフォルダーを取得する

TFS サーバーから「変更セット情報」を取得する TFS ツールを作成しています。

ここで、ユーザーが情報を取得したい「ブランチ/フォルダー」を参照できるように、「TFS ブラウザー」を提供したいと考えています。

TreeView コントロールとGetItems関数を使用して、TFS からアイテムのパスを取得しています。

以下のコードは、ノードから「展開」ボタンをクリックした後、アプリが現在の「分岐」(e) の下にある項目を「照会」することを示しています。

ただし、ブラウザにファイルを含めたくありません。簡単で汚いチェックとして、「パス」に拡張子があるかどうかを確認しています。ない場合は、それがディレクトリであると想定して表示します。「v1.1」という名前のフォルダーがあることに気付くまでは、すべて問題ありませんでした。

解決策があります。GetItems を再度呼び出して、その内容を確認できます。MSDNによると:

path 引数がファイルの場合、そのファイルだけを含むアイテムのセットを返します。パスがフォルダーの場合、そのフォルダー内のすべてのアイテムを含むアイテムのセットを返します。パスにワイルドカード文字が含まれている場合、ワイルドカードに一致する指定されたフォルダー内のアイテムのセットを返します。

ただし、GetItems の各呼び出しには約 1 秒かかり、フォルダーに複数のファイルが含まれている場合、ノードの「展開」には永遠にかかります。

では、TFS からすべての「フォルダー」を取得する方法はありますか? または、パスがフォルダーかファイルかを確認する方法はありますか?

ありがとう!