問題タブ [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.
c++ - C++ ファイルを開き、クラス オブジェクトにデータを入力する
簡単な質問です。できれば簡単な方法で、正しい/効率的な方法で行っていることを確認したいだけです。
私はクラス T オブジェクトを持っています。これは通常、main() 関数で作成されたベクトルに入れられます。任意の種類のデータ、文字列、int、float などを指定できます。ユーザーから入力され、関数に渡されるファイルから読み取っています。これが私の基本的な読み取り機能です。
insert は、データを通過してデータ構造に挿入する別の関数です。それが機能する場合でも、これがそのデータを渡すための最良の方法であることを確認したいだけです。
c++ - C++ fstream の内部バッファリングのレベルを検出/制御するにはどうすればよいですか?
私がこれを行うとします(不自然な例):
私は、iostream ライブラリがここで何らかの内部バッファリングを行い、これを OS レベルで無数の 1 バイトのファイル読み取り操作に変えないことを期待しています。
次の方法はありますか?
a) ifstream の内部バッファのサイズを調べていますか?
b) ifstream の内部バッファのサイズを変更しますか?
数ギガバイトのファイルを小さなチャンクで読み取る必要があるファイル フィルターを作成しています。パフォーマンスに影響するかどうかを確認するために、さまざまなバッファー サイズを試してみたいと思います。
c++ - このテキスト ファイルの読み取りを中断するにはどうすればよいですか (ifstream を使用)。C++
「同義語」という単語が表示されたときに、テキスト入力ファイルの読み取りを停止したい。ifstream を使用していますが、ループを解除する方法がわかりません。stringstream の「シノニム」を使用してみましたが、最終的には bst をジャンクしてしまいました。入力を避けたい場合に備えて、以下に完全なプロジェクト ファイルを含めました。
重要な部分:
辞書.txt
プロジェクト.cpp
MiBST.h (実行したい場合)
c++ - ファイル (ifstream) の読み取り中に、新しい行を作成するように指示する方法はありますか?
ファイル (ifstream) の読み取り中に、新しい行を作成するように指示する方法はありますか?
たとえば、私はこれが起こることを望みます:
myfile>>array[1]>>array[2]>>endl;
明らかに、「endl」は許可されていません。これを行う別の方法はありますか?
編集---迅速な対応に感謝します!
テキスト ファイルから、そのファイルの 2 つの文字列を配列に格納し、次の行で同じことを実行しようとしています (または、必要に応じて for ループを使用します)。
文字列を使用することは、将来のプログラムをより柔軟にするため、私にとって重要です。
c++ - C++ の ifstream の失敗、この行が本来あるべき場所に進まないのはなぜですか?
// THIS LINE SHOULD BE PRINTING でマークされた行に、「同義語」と「反意語」の間の int 値を出力するという機能を実行させたいと考えています。
これはテキストファイルです:
辞書.txt
c++ - このがらくたを私のベクトルから取り出す
下についているゴミをなくしたいvector<int> synsAux
。次のように出力されます。
1 桁目と 3 桁目の前に 2 が追加されています。なぜですか? この 2 は、空白または何かの ascii 値ですか? 読まないようにするにはどうすればよいですか?
これは、プログラムを実行するために必要な辞書ファイルです。
c++ - std::ifstream は FILE よりかなり遅いですか?
私のライブラリは、特定のファイル (テキスト ファイル、サイズ 326 kb) の解析が 30 倍以上遅すぎるという報告を受けました。std::ifstream
ユーザーは、私が(おそらく の代わりに)を使用している可能性があると示唆しましたFILE
。
やみくもに書き直すのは嫌なので、最初にここを確認しようと思いました。私の推測では、ボトルネックは別の場所にあると思われます。私は文字ごとに読んでいるので、使用している関数はget()
、peek()
、およびtellg()/seekg()
.
アップデート:
プロファイリングを行ったところ、紛らわしい出力が得られました。gprof は、それほど時間がかかったとは考えていないようです。最初にファイル全体をバッファーに読み込むようにプログラムを書き直したところ、約 100 倍高速化されました。tellg()/seekg()
問題は時間がかかったことだと思いますが、何らかの理由で gprof がそれを見ることができなかったのかもしれません。いずれにせよ、このサイズであっても、ファイル全体をバッファリングするようには見えifstream
ません。
c++ - ifstream、行末で次の行に移動しますか?
std::ifstream を使用して次の行を検出して移動するにはどうすればよいですか?
エラーが発生した場合は教えてくれると思いますが、エラーが発生するとストリームは機能しなくなります。別のintを読み取る前に、行末にいるかどうかを確認するにはどうすればよいですか?
c++ - c ++ ifstream、文字かEOLineかを検出しますか?
ファイルからすべてのintを読み取るこの関数があります。問題は、文字を読むときに新しい行をトリガーし、常に行末ではなく 1 ずつシークすることです。この関数をより適切に記述するにはどうすればよいですか?
c++ - Matrix txt ファイルを読み取り、配列として保存する
私は現在、巡回セールスマンの問題を解決するためのシミュレーテッド アニーリング コードを書いていますが、txt ファイルから読み取ったデータを保存して使用する際に問題が発生しました。ファイルの各行と列は各都市を表し、2 つの異なる都市間の距離は 15 x 15 の行列として保存されます。
これを読むために、以下に示すように LoadCities() 関数があります。
代わりの istreambuf_iterator メソッドを試して、読み取ったマテリアルを配列に操作するところまで到達しましたが、常に問題が発生するようです。
どんな助けでも大歓迎です。これに対して私の頭をぶつけてきましたが、ほとんど成功していません!
################ 編集/更新@ SoapBox - SA コード、関数、および main() の詳細。これはクリーンでも効率的でも整理整頓されたものでもなく、この段階にあるとは言えません。とりあえず動作する必要があります。このバージョン (以下) は機能し、多項式 (最も単純な問題) を解くように設定されています。これを巡回セールスマン問題に変換するには、次のことを行う必要があります。
距離データを収集する LoadCities() 関数を記述します。(現時点の)
関連する距離の合計を取得するように Initialise() を変更します。
E() を TSP 関数に変更します (例: ランダム ルートの距離を計算します)。
後者の 2 つは実行できることがわかっていますが、それには LoadCities() が必要です。次のスクリプトでは、他に何も変更する必要はありません。
@ strager - 私はその悪いコードを知っていますが、残念ながら、私のプロジェクトに関連する時間の制約とその結果としての学習曲線を考えると、必要なのは結果です! :) 後の段階で整理されます。
@ dirkgently - それがこのようにする最初の理由でした。