問題タブ [cfile]
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++ - CFile::Write が例外をスローするとどうなりますか?
書き込み操作が途中で例外をスローするとします。ファイルにデータが書き込まれているか、ファイルにデータが書き込まれていないか?
c++ - CFile オブジェクトの書き込みまたは読み取りのプロセス中にファイル ポインターを変更できますか
複数のスレッドからアクセスできる CFile オブジェクトがあります。あるスレッドがこのファイルにデータを書き込んでいる間に、別のスレッドがファイルからデータを読み取っている可能性があります。このポリシーに危険性はありますか? 書き込みまたは読み取りプロセスが完了する前に、ファイル ポインターを変更できますか? 答えはイエスです。同時に読み書きできるマルチスレッドの危険性を回避するにはどうすればよいですか?
どうもありがとうございました!
c++ - CFile Seek に関する質問
MFC CFile Seek 関数を使用しています。ファイルの長さを超えるシークについて問題があります。
MSDN: 備考
Seek 関数は、ポインタを絶対的または相対的に指定した量だけ移動することにより、ファイルの内容へのランダム アクセスを許可します。シーク中に実際に読み取られるデータはありません。要求された位置がファイルのサイズよりも大きい場合、ファイルの長さはその位置まで拡張され、例外はスローされません。
MSDN によると、ファイルの長さは拡張されます。ただし、 の後cfile.Close()
、ファイルは同じままです。なぜですか?どうもありがとうございました!
c++ - UnicodeでCFile::Read()を使用してファイルからCStringオブジェクトを取得するにはどうすればよいですか?
文字セットはUnicodeです。CStringタイプの文字列をファイルに書き込み、後でファイルから読み取りたい。CFile :: Write()メソッドを使用して文字列をファイルに書き込みます。
質問は次のとおりです。strSampleのコンテンツを含むファイルからCStringを取得したいと思います。どうすればいいですか?
どうもありがとうございます!
c++ - 関数 Cfile を使用して MFC のファイルの内容を読み取ることができませんか?
ファイルに手動で何かを書き込むと、ファイルの内容を読み取ることができません...コンテンツが既に存在する場合は、内容を読み取ることができます...しかし、手動でファイルに何かを書き込んで試してみると読むために編集した内容を読むことができません..読むために使用している以下のコードを確認してください....
c++ - UTF-8、CString、CFile? (C++、MFC)
私は現在、特にUTF-8で動作する必要があるMFCプログラムに取り組んでいます。ある時点で、UTF-8 データをファイルに書き込まなければなりません。そのために、CFiles と CStrings を使用しています。
utf-8 (より正確にはロシア語の文字) データをファイルに書き込むと、出力は次のようになります。
など。これは確実に utf-8 ではありません。このデータを正しく読み取るには、システム設定を変更する必要があります。非 ASCII 文字をロシア語のエンコーディング テーブルに変更することはできますが、ラテン語ベースの非 ASCII 文字はすべて失敗します。とにかく、それは私がそれを行う方法です。
何か不足していますか?代わりに何か他のものを使用しますか? 私が見逃したある種のキャッチはありますか?仲間のプログラマーの皆さんの知恵と経験に耳を傾けます。
編集:もちろん、質問したばかりなので、ここで見つけることができる興味深いものをついに見つけました。私はそれを共有するかもしれないと思った。
編集2:
さて、BOM をファイルに追加しました。ファイルには中国語の文字が含まれています。おそらく、行を UTF-8 に変換していないためです。ボムを追加するには...
そしてその後、私は追加しました...
しかし、TestLine の長さを取得する方法がよくわからないため、コンパイルできません。strlen は TCHAR を受け入れないようです。 修正され、代わりに 1000 の静的な長さが使用されました。
編集3:
だから、私はこのコードを追加しました...
コンパイルは問題なく行われますが、新しいファイルを見てみると、この新しいコードがまったくないときとまったく同じです (例: Ðàñïå÷àòàíî:)。一歩も踏み出せなかったような気もしますが、勝敗を分けるのは些細なことだと思います。
編集4:
ネイトが尋ねたので、以前に追加したコードを削除し、代わりに彼のコードを使用することにしました。
すべて正常にコンパイルされますが、ロシア語の文字は ??????? と表示されます。近づいていますが、まだそうではありません。ところで、私を助けようとした/助けようとしてくれたすべての人に感謝したいと思います。私はこれでしばらく立ち往生しています。この問題がなくなるのが待ちきれません。
最終編集 (私は願っています) 最初に UTF-8 文字を取得する方法を変更することで (本当に知らずに再エンコードしました)、これはテキストを出力する新しい方法で間違っていましたが、許容できる結果が得られました。ファイルの先頭に UTF-8 BOM 文字を追加することで、Excel などの他のプログラムで Unicode として読み取ることができます。
万歳!みんなありがとう!
visual-c++ - CStdioFile::Open() からエラー メッセージを取得していますか?
CStdioFile::Open が失敗した場合、エラーの原因を報告できるようにしたいと考えています。
ただし、例外がスローされないように見えます。また、次のことを試すと:
アサーションは、exc.GetErrorMessage の下位のどこかでトリップします。
これは、try-catch ブロックを使用しない場合に発生することを読みました。しかし、Open が例外をスローしないのに、なぜ try-catch ブロックを使用するのでしょうか?
オープンエラーを報告する方法についてのアイデアは役に立ちます!
c++ - 頻繁なファイル書き込み操作を高速化する方法はありますか? Cファイル
私の仕事は、データの小さな部分をファイルに頻繁に確実に書き込むことです。これはある種のロギング システムであり、データをディスクに保存する際の安全性と速度を保証する必要があります。頻繁に呼び出される Flush() 関数にブレーキがかかることがわかりました。それで、私はそれを取り除くことにしました。
データのバッファリングとキャッシュを禁止するフラグを使用しました (osNoBuffer と writeThrough)。この後、私が理解しているように、flush() を使用せずにファイル I/O 操作 (ファイルへのデータの書き込み) を実行できましたか? もう一問。データがキャッシュやバッファリングなしで確実にディスクに書き込まれることをどのように理解できますか? それは私が望むことを行うための正しい方法ですか、それとも頻繁なファイル書き込み操作を高速化する別の方法でしょうか??
c++ - CFile はガベージ値を書き込みます
ファイルにいくつかのデータを書き込んでいますが、これを正しく書きません。コード:
ファイルを次のように表示します
c++ - CFileは0バイトを読み取ります
CFileを使用する場合、何らかの理由で、read()を呼び出すと、最初の呼び出しの後に0バイトが返されます。
明らかにそれ以上であることがわかっている場合、ファイルの長さはわずか72バイトであることがわかります。nullで終了する文字列をたくさん保存しました。たとえば、「Hello」の場合、構築時にCFileクラスが最初のNULL文字を探し、それをファイルの終わりと呼んでいると思います。setLength()関数を使用しようとしましたが、エラーが発生します
ファイルの残りの部分を読み取るにはどうすればよいですか?
編集:
私のプロジェクトはASCIIでの書き込みを読み取るように設定されています。そしてファイルもASCIIで書かれています