問題タブ [ifstream]

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 に答える
384 参照

c++ - 以前に切り捨てられたファイルを開くときの奇妙なガベージデータ

私のプログラムでは、stdoutをファイル「console.txt」に出力するようにリダイレクトしました。関数は次のようにそのファイルに書き込みます。

そのファイルから次のような関数を読み取ります。

初めてreadLogFile、すべてが正常に動作します。しかし、その後、問題が発生し始めます。console.txtの最初の行に空白の文字列として読み込まれます。私はgvimでconsole.txtを開いた状態でプログラムをステップ実行し、プログラムがどのように変化するかを監視しました。初めて正常に機能したとき、console.txtは次のようになります。

あるべき姿です。その後、プログラムはに移動しclearLogFile、その後、console.txtは空になります。ただし、2回目に開くとifstream、console.txtは次のようになります。

今回getlineは、最初の行をに読み込むstrときstrは空白です。不思議なことに、 gdbで調べたところ空であることがわかったとしても、このcerr << "str: " << str << endl;行はstr「movedUP。@ 191 191 191 000」と表示されます。str

誰もがここで何が起こっているのか知っていますか?

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

c++ - C++ で ifstream を使用してファイルを開いて読み取るにはどうすればよいですか?

ファイルを開いて、そこから行を読みたいと思います。ファイルには 1 行しかないので、実際にループについて心配する必要はありませんが、今後の参考のために、複数行を読み取る方法を知っておくとよいでしょう。

どうすればいいですか?また、正常に開いたという点で、開いているファイルを正しく処理していますか?

ありがとう。

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

c++ - ASCII で格納された大きな浮動小数点ファイルを解析する最良の方法は?

ASCII で格納された大きな浮動小数点ファイルを解析する最良の方法は何ですか?

それを行うための最速の方法は何ですか?ifstream の使用は悪いことだと誰かが私に言ったのを覚えています。なぜなら、それは少数のバイトで機能するからです。最初にファイルをメモリに読み込むだけの方がよいでしょう。本当?

編集: 私は Windows で実行しています。ファイル形式は、xyzrg b のような行に格納されるポイント クラウド用です。それらを配列に読み込もうとしています。また、ファイルはそれぞれ約 20 MB ですが、約 10 GB のファイルがあります。

2 番目の編集: ビジュアライゼーションを実行するたびに表示するファイルをロードする必要があるため、可能な限り高速にするとよいでしょうが、正直なところ、ifstreamプリフォームが合理的であれば、そのまま使用してもかまいません。読み取り可能なコード。現在、実行速度は非常に遅いですが、これはソフトウェアでできることよりもハードウェア I/O の制限である可能性があります。確認したかっただけです。

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

c++ - fstream から正確に 128 バイトを文字列オブジェクトに読み込むにはどうすればよいですか?

fstream から正確に 128 バイトを文字列オブジェクトに読み込むにはどうすればよいですか?

ファイルの最初の 128 バイトを読み取って出力し、次にファイルの最後の 128 バイトを読み取って出力するコードを書きました。EOF まで簡単に反復できるため、最後の部分は機能しますが、先頭から正確に 128 バイトを取得するにはどうすればよいでしょうか? ifstream イテレータに 128 を追加できないため、以下のコードは機能しません。インデックス化できず、インクリメントのみ可能です (らしい)。

確かに、イテレータと *++ を 128 回作成することはできますが、それを行うには 1 行の簡単な方法が必要ですよね?

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

c++ - フォーマットされたデータをC++で読み取る方法は?

私は次のようにデータをフォーマットしました:

テキストファイルにあり、ifstreamを使用して読み取っていますが、数字と単語を区切るにはどうすればよいですか?単語はアルファベットのみで構成され、単語と数字の間に特定のスペースまたはタブがありますが、いくつあるかはわかりません。

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

c++ - cin と ifstream のストリームの終わりを見つけますか?

私は、C++ プログラミングの復習として持っている C++ の教科書を読んでいます。練習問題の 1 つ (詳しくは説明しませんが) では、ifstream または cin (istream など) を引数として渡すことができる関数を定義する必要があります。そこから、ストリームを読み進める必要があります。問題は、この1 つの関数で cin と ifstream を使用してストリームの末尾を効果的に検出する方法がわからないことです。すなわち、

シンではうまくいきません。特定のフレーズ (「#End of Stream#」など) を探すように関数を作り直すこともできますが、渡すファイル ストリームにこの正確なフレーズが含まれている場合、これは悪い考えだと思います。

私は関数のオーバーロードを使用することを考えましたが、これまでのところ、本は私がこれを行うことを望む場合について言及しています。私はおそらくこの 1 つの練習問題に力を入れすぎていますが、私は創造的なプロセスを楽しんでおり、オーバーロードせずにこれを行う方法があるかどうかに興味があります.

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

c++ - テキストファイルから読み取るときにgetlineを使用する

私は最初にインデックスのようなメカニズムを構築し、getlineを使用してテキストファイルの各行を読み取り、既知のヘッダー宣言(string.compare)と一致するかどうかを確認し、そのポイントへのインデックスとしてtellg位置を保存します。次に、seekg(index、ios :: beg)を使用して、ファイル内のヘッダーがある場所を検索します。インデックスを作成してseekg(0、ios :: beg)を呼び出すときにファイルを一度読み取った後、次のgetlineは、ファイルの最初の行が表示されると予想される空の文字列を返します。

私の問題をよりよく強調するために、私のコードの一部を以下に示します

getLineID関数は、文字列比較の結果に応じてintを返します。

ファイルを再度読み取る必要がある場合、getlineの使用は正しくありませんか?

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

c++ - Int32 で cin を使用するには、">>" 演算子を定義する必要がありますか?

ファイルから正確に 32 ビットを読み取る必要があります。STLでifstreamを使用しています。私は直接言うことができます:

...または、int32 で動作するように >> 演算子をオーバーライドする必要がありますか? ここに int32 がリストされていません: http://www.cplusplus.com/reference/iostream/istream/operator%3E%3E/

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

c++ - サイズ不明の文字列をパースする

テキスト ファイルから不明なサイズの文字列を読み込もうとしていますが、次のコードを使用しました。

しかし、制限があるため好きではありません (この制限を超えるのは非常に難しいことはわかっています) が、次の文字列のサイズに応じて再割り当てするより良いコードを実装したいと考えています。

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

c++ - ファイルの最後に到達したときの ifstream.peek() の戻り値

Cplusplus.com でこの記事を見ていました。 http://www.cplusplus.com/reference/iostream/istream/peek/

ファイルの最後に到達した場合に peek() が何を返すかはまだわかりません。

私のコードでは、このステートメントが真である限り、プログラムの一部が実行されるはずです

sourcefile は私の ifstream です。

ただし、ファイルの最後に到達しても、ループを停止することはありません。

EOFは「ファイルの終わり」を意味しませんか? それとも私の使い方が悪かったのでしょうか?