14

この 2 つのライブラリの違いをインターネットで検索すると、誰も<iostream>が C++ の標準 I/O ライブラリであり、C 用であると<cstdio>言っています。クラッシュ。彼はまた、 はよりもほぼ 3 倍高速な入力と出力を提供すると述べています。しかし、私はその方が便利で、私の教授が正しいかどうかもわかりません。cin>>cout<<cin>>stdioiostreamiostream

それで、あなたは私に何を使うようにアドバイスしますか?

4

4 に答える 4

17

を使用しiostreamても、プログラムがクラッシュすることはありません。遅くなる可能性がありますが、それは と相互運用しようとしているからstdioです。この同期はオフにすることができます1iostream入力を取得する慣用的な C++ の方法であり、C++ を使用するstdio場合、ほとんどの場合、関数よりも使用することをお勧めします。

1使用std::ios::sync_with_stdio(false);

于 2013-06-25T06:02:43.413 に答える
9

C++ ではストリームを使用し、C では stdio.h を使用します。はい、ストリームは少し遅くなりますが、これらのミリ秒はカウントされますか? ユーザー入力がアプリケーションのボトルネックになることはめったにありません。

また、ストリームが適切に使用され、コンパイラ/ランタイム ライブラリが正常であれば、アプリケーションはクラッシュしません。

ただし、関数を使用する十分な説明可能な理由がある場合cstdioは、C++ でも関数を使用することは完全に正当です。

于 2013-06-25T06:03:55.710 に答える
3

I/O のパフォーマンスが本当に重要でない限り、プログラムを最も明確にする (最も読みやすい) ものを使用してください。

私が書いた膨大な数のプログラムの中で、「I/O の速さ」に対して特別な処理が必要なプログラムはごくわずかです。std::stream関数に関する問題のほとんどは、入力の実際の解析に関係しています [およびstdio と同期] - たとえば、浮動小数点数を読んでいる場合、[std::stream可能なすべての形式を受け入れる] の独自のバージョンを作成するのは非常に困難です。

I/O パフォーマンスが本当に重要な場合は、std::stream::readとを使用std::stream::writeすることが解決策になる可能性がありますが、ほとんどの場合、最高のパフォーマンスは、ファイルの内容をファイルシステムから仮想メモリに直接「マップ」する移植性のないインターフェイスをmmap使用することで得られます。MapViewOfFileアプリケーション。これにより、データの処理に必要なコピーの量が節約され、少し速くなります。

于 2013-06-25T08:21:55.303 に答える
1

iostreams ライブラリは、下位レベルの stdio ライブラリよりも遅い可能性があります。Streams は、型変換、ローカリゼーション、例外処理など、より多くの処理を内部で行います。

于 2013-06-25T06:03:12.417 に答える