問題タブ [fstream]
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.
c++ - EOFが最後の行を繰り返すまでテキストファイルから読み取る
次のC++コードは、ifstreamオブジェクトを使用して、 EOFに達するまでテキストファイル(1行に1つの数値)から整数を読み取ります。最後の行の整数を2回読み取るのはなぜですか?これを修正する方法は?
コード:
input.txt:
出力:
注:コードスニペットを小さく保つために、すべてのエラーチェックコードをスキップしました。上記の動作は、Windows(Visual C ++)、cygwin(gcc)、およびLinux(gcc)で見られます。
c++ - mmap()と読み取りブロック
サイズが100GB以上になる可能性のあるファイルを処理するプログラムに取り組んでいます。ファイルには、可変長レコードのセットが含まれています。私は最初の実装を立ち上げて実行しており、現在、特に入力ファイルが何度もスキャンされるため、I/Oをより効率的に実行することでパフォーマンスの向上を目指しています。
mmap()
C ++のライブラリを介してブロックを使用するか読み取るかについての経験則はありfstream
ますか?私がやりたいのは、ディスクからバッファーに大きなブロックを読み取り、バッファーから完全なレコードを処理してから、さらに読み取ることです。
'dブロックはページサイズの境界上にある必要があり(私の理解)、レコードはページ境界を越えて存在する可能性があるため、mmap()
コードは非常に乱雑になる可能性があります。mmap
sを使用fstream
すると、ページサイズの境界にあるブロックの読み取りに制限されないため、レコードの先頭を探して再度読み取りを開始できます。
最初に完全な実装を実際に作成せずに、これら2つのオプションのどちらかを決定するにはどうすればよいですか?経験則(たとえば、mmap()
2倍速い)または簡単なテストはありますか?
c++ - std::fstream から FILE* を取得する
C++ std::fstream から C FILE* ハンドルを取得する (クロスプラットフォーム) 方法はありますか?
私が尋ねる理由は、私の C++ ライブラリが fstreams を受け入れ、ある特定の関数で FILE* を受け入れる C ライブラリを使用したいからです。
c++ - fstreamを使用して、スペースと改行を含むすべての文字を読み取ります
fstream
txtファイルを読むために使用したかった。
を使用してinFile >> characterToConvert
いますが、問題は、スペースと改行が省略されていることです。
私は暗号化プログラムを書いているので、スペースと改行を含める必要があります。
これを達成するための適切な方法は何でしょうか?
c++ - fstream を使用して 2 行目からテキスト ファイルを読み取るにはどうすればよいですか?
std::fstream
オブジェクトに 2 行目からテキスト ファイルの読み取りを開始させるにはどうすればよいですか?
c++ - c++ ifstreams がデバイスから読み取れないのはなぜですか?
私は、C++ io を使い始めてはならないことを知っていました。「型の安全性」の議論全体が赤ニシンです (これが最も差し迫った問題の 1 つであることに気付いた人はいますか?) 。とにかく、私はそうしましたが、ifstreams と FILE*s および単純な古いファイル記述子の奇妙な違いを発見しました: ifstreams はデバイスから読み取ることができません。理由が思いつく人いますか?
c++ - fstream オブジェクトのフラグ FILE_FLAG_BACKUP_SEMANTICS を設定するにはどうすればよいですか?
fstream オブジェクトのフラグ FILE_FLAG_BACKUP_SEMANTICS を設定するにはどうすればよいですか?
ほとんどのフラグは fstream で設定できますが、これは利用できないようです。旗についてはこちらで読むことができます。
c++ - C++ ファイル処理 (構造)
次のコードは、コンパイルしてg ++で実行すると、「1」が2回出力されますが、ファイルに単一の構造をダンプしているため、「1」は1回だけ出力されると予想されますが、読み取り中に2つの構造を読み取っているようです. なんで?
c++ - 見つからない C++ のファイルに出力する際のエラー
「stackoverflowで答えが見つからない」のではなく、「自分が何を間違っているのか分からない」のように、大きな違いです!
とにかく、コードは以下に添付されています。それが行うことはかなり基本的なもので、ユーザーが作成したテキスト ファイルを取り込み、暗号化されたものを吐き出します。この場合、ユーザーは、実際の各文字の間にいくつのジャンク文字を配置するかを指定します。(IE: "Hello" という単語をジャンク文字 1 文字で暗号化すると、"9H(eal~lo") のようになります)
私の問題は、何らかの理由で、入力ファイルを正しく読み取っていないことです。以前に復号化で行ったのと同じセットアップを使用してファイルを読み込んでいますが、今回はゴミ文字を読み込んでおり、ファイルに出力するように指示すると、代わりに画面に出力され、次のようになります出力ファイルには何も入れられていません (作成中ですが、それは私が何かを正しく行ったことを意味します。私を指摘してください!
コード:
while ループの先頭に貼り付けたのは宣言変数です。これは、暗号化するだけでなく、復号化も行う非常に大きなコードの一部です。完全に機能するため、復号化の部分は省略しました。この部分です。に問題があります。
助けてくれてありがとう!
編集::私はVisual C++ Express 2008を使用していますが、エラーも警告もまったくないことがわかります。
重要な編集 ファイルに出力されていることがわかりました!ただし、ASCII文字ではなく数字を出力しており、本来あるべき文字の文字化けも出力しています。「infile.get(letter)」に戻ると、新しい文字が取得されません。したがって、現在、問題は2つあるようです。1)ASCII文字の代わりに数字を印刷します。2) 実際のキャラクターの代わりにガベージを使用する。
Question Answered 「重要な編集」の 2 番目の部分を見つけました ...何かに test.txt という名前を付けるとわかります...これは、C++ プログラムに入力すると、実際には test.txt.txt と呼ばれることを意味します。どんなプログラムでもうんざりさせるのは、ごくわずかで単純な詳細であることがわかります。ジョージ・ショアに感謝します。入力ファイルが間違った場所にあるというあなたのコメントは、実際のアイテム名を試すというアイデアを与えてくれました。
回答を手伝ってくれた皆さん、ありがとうございました!