問題タブ [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 ++ファイルストリームからunsigned charを読み取る
バイナリ ファイルから符号なしバイトを読み取りたい。そこで、以下のコードを書きました。
これにより、変数 count で示されるように、常に 0 バイトが読み込まれます。
これを機能させるにはロケールを設定する必要があると言っている参考文献がウェブ上にあるようです。これを正確に行う方法は私には明らかではありません。
同じコードは、「unsigned char」の代わりに「char」データ型を使用して機能します
unsigned char を使用した上記のコードは Windows では動作するようですが、colinux Fedora 2.6.22.18 では実行できません。
Linuxで動作させるにはどうすればよいですか?
c++ - ifstream を手動で閉じる必要はありますか?
close()
を使用する場合、手動で呼び出す必要がありstd::ifstream
ますか?
たとえば、コードでは次のようになります。
file.close()
手動で呼び出す必要がありますか? ファイルを閉じるためにRAIIifstream
を利用すべきではありませんか?
c++ - ifstream::openがVisualStudioデバッグモードで機能しない
私はここSOでifstreamの質問を何度も繰り返してきましたが、単純なテキストファイルを読むのにまだ問題があります。VisualStudio2008を使用しています。
これが私のコードです:
の値をチェックして、input.txtファイルが正しい「作業ディレクトリ」にあることを確認しましたargv[0]
。Openメソッドは機能しません。
デバッグにも問題があります-時計をオンに設定できないようにする必要がありますinfile.good()
かinfile.is_open()
?私は得続けます
編集: .CPPファイルからの完全なコードでコードリストを更新しました。
更新:ファイルは現在の作業ディレクトリにありませんでした。これは、プロジェクトファイルが配置されているディレクトリです。そこに移動すると、VS.NETでデバッグするときに機能します。
c++ - C++でフルパスでファイルを開く
ファイル名だけでなく、ファイルが存在するフルパスをユーザーに教えてもらいたい。この方法でファイルを開くにはどうすればよいですか?
これは次のようなものですか?
これはうまくいかないようです。
c++ - C++ 指定されたオフセットを持つオブジェクトを読み込む方法は?
これで、多くのデータを含むファイルができました。そして、必要なデータが位置 (long)x から始まり、指定されたサイズ sizeof(y) であることを知っています。このデータを取得するにはどうすればよいですか?
c++ - Windows std::ifstream::open() の問題
std::ifstream::open() に関していくつかの質問があったことは知っていますが、その答えは私の問題を解決しませんでした。それらのほとんどは Win32 に固有のものであり、私は SDL を使用しており、OS 固有の機能には触れていません (... SDL にラップされていません)。
問題は次のとおりです: std::ifstream::open() は、Dev-C++ から Code::Blocks に切り替えたため、もう機能していないようです (両方で同じ MinGW-GCC バックエンドを使用しています)。 )、および Windows XP から Vista へ。(OS X / xcode (GCC バックエンド) でも完全に動作します。)
私のプロジェクトは、#include <string>、<iostream>、<fstream>、および <cassert> を含む静的ライブラリに対してリンクし、静的ライブラリで定義された機能への呼び出しが行われ、std::ifstream::open が呼び出されます。 () (今回は直接)。これに続いて、ストリームは false と評価されます (暗黙の bool 変換演算子と good() メソッドの両方を使用)。
コード:
stdout.txt 言います:
「D:/マイ プロジェクト/Test/test.cfg」を開いています...
stdout.txt を開いて、ファイル名を含むパスを [スタート] メニューの [ファイル名を指定して実行] にコピー アンド ペーストすると、ファイルが正常に開かれます (ただし、これがどの程度の診断値であるかは完全にはわかりません。また、アドレスは次の形式に変換されます: file:///D:/My%20projects/test/test.cfg)。
また、「/」を二重のバックスラッシュ エスケープ シーケンスに置き換えてみましたが (これも、以前はスラッシュが正常に機能していました)、結果は同じでした。
これはデバッグ バージョンですが、main() の argv[0] から取得した絶対パス全体を使用しています。
どこで問題が発生し、それを修正するにはどうすればよいですか?
c++ - エンドを超えたifstreamseekgがVS2008Expressでeofを返さない場合
VS 2005では、次のようなコードがあります。
コードはVS2005では正常に機能しましたが、VS2008Expressでは失敗します。私の知る限り、VS 2008は、コードがファイルの最後をシークした後、eof()を返していません。私は何かが足りないのですか?シークの場所がファイルサイズを超えているかどうかを確認する明示的なチェックを追加して修正しましたが、ifstreamを正しく理解していることを確認したいと思います。
c++ - MSVC++7.1 での ifstream.read() と ifstream.readsome() の比較
Linux で開発されたファイル リーダーの古いコードを取り、MSVC++7.1 でコンパイルされた Windows プロジェクトでまったく同じコードを使用しようとしました。コードは問題なくコンパイルされましたが、Windows のファイル リーダーによると、ファイルは空のようでした。
ストリームにエラーフラグを設定せずに、ファイルから何も読み取らなかった ifstream.readsome() まで問題を追跡しました。以下に示すコードは、Linux と Windows のどちらでもコンパイルできますが、Linux では期待どおりに動作します。
このコードはファイルを開き、ファイルの最初の 512 バイトを で 1 回、read()
で 1 回読み取りますreadsome()
。両方の結果は、プログラムの最後に比較される 2 つのベクトルに格納されます。期待される結果は、2 つのベクトルが等しいことです。
Windows XP でのプログラムの結果出力は、ソース コードの下に掲載されています。
誰かがこのコードで何がうまくいかないかについてのアイデアや推測を持っている場合は、ぜひ聞いてください。
デモの完全なソース コード:
Windows XP での出力:
c++ - ファイルを開く際の問題 c++
簡単な答えでなければなりませんが、私は途方に暮れています。エラーを返すコードは次のとおりです。開始スラッシュの有無にかかわらず試しました。
フルパスがわからないので、exeからの相対パスにしたいのですが、それが相対パスです。スラッシュをエスケープしてみました。
私の問題は、ファイルがそこにあるときに「ファイルを開くエラー」が発生することです。なぜ失敗するのですか?
ありがとうございました