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

c++ - ブロックされた Boost::Thread を強制終了する

two からの入力をブロックするアプリケーションを作成していますistreams

どちらからistreamの読み取りも同期 (ブロッキング) 呼び出しであるため、Boost::thread読み取りを行うために 2 つの を作成することにしました。

これらのスレッドのいずれかが (受信した入力に基づいて) 「終了」に達することができ、「終了」に達すると、両方の入力ストリームの受信が停止します。残念ながら、どちらがそうするかはわかりません。

したがって、join()実際に返される (ブロック解除される) スレッドは 1 つだけ (どのスレッドかを事前に決定することはできません) であるため、両方のスレッドを使用することはできません。

どうにかしてもう一方を強制的に終了させる必要がありますが、入力を待ってブロックされているため、戻る時間だと判断できません(条件変数かどうか)。

次のいずれかへの方法はありますか?

  • boost::thread にシグナルを送信する、または
  • 強制的istreamに「失敗」させる、または
  • Boost::thread を殺す?

ノート:

  • その一つistreamscin
  • プロセスを再起動しようとしているため、リセットを禁止する方法で入力ストリームを閉じることはできません。

編集:

  • 「終わり」に達したとき、どのスレッドが正常に終了したか、どのスレッドを強制終了する必要があるかを知っています。それは私が理解する必要がある殺害です(またはistreamから読み取るための別の戦略)。
  • 終了して適切にクリーンアップするには、両方のスレッドが必要です:(

ありがとう!

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

c++ - std::wcout から Xcode のコンソール ウィンドウへ

Xcode プロジェクトではstd::cout、コンソールへの書き込みに使用すると、出力は問題ありません。

ただし、使用するstd::wcoutと出力が得られません。

私はこれが C++ の厄介な問題であることを知っており、Xcode のケースで特定の解決策を見つけようとグーグルで検索してきました。提案されたことが機能することがわかったいくつかのことは次のとおりです。

これらのどちらも違いはありません。ファセット API を勉強してコンソールに書き込めるようになるまであと 2 週間を費やすことを諦める前に、ここで尊敬する聴衆に確認してみようと思いました。

[アップデート]

私が抱えていた問題の理由は、実際には、印刷しようとしている文字列の特定のエンコーディングに関係していると思います。

文字列リテラルのみを送信すると、 を使用しL"my string" syntaxて機能します! これは UTF32 (リトル エンディアン エンコーディング) を使用しているようです。

ただし、これを NSUTF32BigEndianStringEncoding エンコーディングを使用して Objective C++ コードから渡された文字列と混ぜています。問題を引き起こしているのは、このエンコーディングの組み合わせです。

この件は終了したと考えてよいと思います。読んでくれてありがとう。

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

c++ - C++ ストリームが unsigned char ではなく char を使用するのはなぜですか?

なぜ C++ 標準ライブラリが basic_[io]stream とそのすべてのバリアントをchar型ではなく型を使用してインスタンス化したのか、私はずっと疑問に思っていましたunsigned charchar(署名されているかどうかに応じて) get() などの操作でオーバーフローとアンダーフローが発生する可能性があることを意味します。これにより、関連する変数の実装定義の値が得られます。putもう 1 つの例は、その関数を使用して、フォーマットされていないバイトを ostream に出力する場合です。

何か案は?


:私はまだ確信が持てません。したがって、決定的な答えがわかっている場合でも、実際に投稿できます。

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

c++ - c++ stl を使用して 4GB を超えるファイルを読み取る

数週間前、いくつかのファイルを読み込むために std::ifstream を使用していましたが、ファイルが 4GB を超えていたため、開くとすぐに失敗しました。当時、なぜ 32 ビットのファイル サイズに制限されたのかについて適切な答えを見つけることができなかったので、ネイティブ OS API を使用して独自に作成しました。

それで、私の質問: std::ifstream/std::ostream (IE: 標準 c++) を使用してサイズが 4GB を超えるファイルを処理する方法はありますか

編集: VC 9 コンパイラ (Visual Studio 2008) の STL 実装を使用します。EDIT2:4GBを超えるファイルサイズをサポートする標準的な方法が必要です。

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

c++ - stdin/stdout/stderr でのクロスプラットフォーム (linux/Win32) ノンブロッキング C++ IO

次の特性を持つ stdin/stdout を介したノンブロッキング IO の最適なソリューションを見つけようとしています。

  • 十分なデータがある限り、nサイズのチャンクで読み取ります。
  • 十分なデータがない場合は、部分的なチャンクで読み取ります。
  • 利用可能なデータがない場合は、データが得られるまでブロックします (たとえnよりも小さい場合でも)。

目標は、「制御」コードをすぐに処理しながら、大規模なデータセットを効率的に転送できるようにすることです (部分的に満たされたバッファーにコードを残すのではなく)。

スレッドと istream::get() ループを使用するか、プラットフォーム固有のコードをたくさん書くことでこれを達成できることを私は知っています (Windows ではファイル ハンドルで select() を実行できないため)... (( istream::readsome() も有望に思えますが、Googleで見つけた唯一の結果は、実際にはうまく機能しないと言っている人だけでした.))

私はこれらの API を使ったコーディングをあまり行っていないので、もっと良い方法があるかもしれません。

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

.net - あるストリームの出力を別のストリームへの入力にする最良の方法は何ですか?

バイトバッファとループを使用する以外に、あるストリームから読み取り、別のストリームに(.NETで)書き込むためのより良い/作り付けの方法があるかどうか疑問に思っています。通常、これは変換をストリームに適用して移動するために行われます。

この例では、ファイルをロードし、deflate ストリームを介してファイルに書き込みます (簡単にするためにエラー処理を削除しました)。

編集:

.NET 4.0 には Stream.CopyTo 関数が追加されました。ハレルヤ

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

c++ - C++ fstream の内部バッファリングのレベルを検出/制御するにはどうすればよいですか?

私がこれを行うとします(不自然な例):

私は、iostream ライブラリがここで何らかの内部バッファリングを行い、これを OS レベルで無数の 1 バイトのファイル読み取り操作に変えないことを期待しています。

次の方法はありますか?

a) ifstream の内部バッファのサイズを調べていますか?

b) ifstream の内部バッファのサイズを変更しますか?

数ギガバイトのファイルを小さなチャンクで読み取る必要があるファイル フィルターを作成しています。パフォーマンスに影響するかどうかを確認するために、さまざまなバッファー サイズを試してみたいと思います。

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

c++ - std :: ifstream :: open()が機能しない

私はゲームのプロトタイプを開発しています。ゲームデザイナーが再コンパイルに加えて私からの助けを必要とせずにゲームパラメーターを微調整できるように、特定のゲームプレイルールをiniファイルで定義する必要があります。これは私が現在行っていることです:

ただし、ストリームが正常に開くことはありません。デバッグ中にSTLソースを深く掘り下げると、_getstream()(stream.cで定義されている)がNULLを返し続けることがわかりますが、これがなぜであるかはわかりません。助けて、誰か?

編集:Rules.iniは.exeファイルと同じディレクトリにあります。

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

c++ - std::cout または std::ofstream(file) から std::ostream を取得します。

特定のプログラム条件に応じて、a をオブジェクトまたはstd::ostreamオブジェクトにバインドするにはどうすればよいですか? これは多くの理由で無効ですが、意味的には次のものと同等のものを実現したいと考えています。std::coutstd::ofstream

http://www2.roguewave.com/support/docs/sourcepro/edition9/html/stdlibug/34-2.htmlの例など、例外セーフではない例をいくつか見ました。

より優れた例外セーフなソリューションを知っている人はいますか?

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

java - Java で System.out/err がバイト ストリームとして実装されるのはなぜですか?

コマンドライン I/O に関する Sunのこのチュートリアルを見ていました。それは次のように述べています。

標準ストリームは文字ストリームであると思われるかもしれませんが、歴史的な理由から、それらはバイト ストリームです。System.out と System.err は PrintStream オブジェクトとして定義されています。技術的にはバイト ストリームですが、PrintStream は内部文字ストリーム オブジェクトを使用して、文字ストリームの多くの機能をエミュレートします。

「歴史的理由」とは何か知っている人はいますか?