0

重複の可能性:
ifstream でロードされたファイルの読み取りに失敗する

次のファイルの出力は 00100 です。これは、failbit が設定されていることを示しています。問題は、なぜそれが設定されているのか理解できないことです。誰かが共有する洞察を持っていますか?

#include <fstream>
#include <iostream>
int main()
{

    std::ifstream paths_in("C:\\Users\\bill hank\\AppData\\bot_plugins\\directory_listing.txt", std::ios::in);
    std::cout << paths_in.good();
    std::cout << paths_in.is_open();
    std::cout << paths_in.fail();
    std::cout << paths_in.eof();
    std::cout << paths_in.bad();
    while (paths_in.good())
    {
        char q[5000];
        paths_in.getline(q, 5000);
        std::cout << q;
    }
    paths_in.close();
    std::cout << "Press ENTER to continue...";
    std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );
    return 0;
}

編集:私はそれを理解しました。うわー、私はこれに対する答えに悩まされています。基本的に Windows では、ファイル拡張子を表示するかどうかを指定できます。この Windows インストールは、拡張機能を表示しないように設定されています。したがって、ファイルを何度もチェックしていると、次のように表示されます。

4

2 に答える 2

2

私の観点からは、あなたのコードには何も問題がないので、環境に何か問題があるに違いありません:

  • ファイルの場所を確認しましたか?
  • ファイルを読み取る権限を実際に持っていますか?
  • ファイルはすでに別のプロセスによって排他モードで開かれていますか (たとえば、プロセス エクスプローラーを使用してこれを確認できます)。
于 2010-12-25T20:20:56.613 に答える
0

CreateFileの呼び出しを記述し、エラーコードに対して何が得られるかを確認します。

于 2010-12-25T20:26:21.183 に答える