2

私の .exe と addrr.txt ファイルは D:\ ドライブにあります

私が.txtファイルを準備しようとしているとき、ifstreamは何もしません

これは私のコードです:

 ifstream file;
        file.open("addrr.txt", fstream::in | fstream::out);
        if (file.is_open())
        {
            while (file.good())
            {
                cout << "Addrr.txt IsGood" <<endl;
                getline(file, Path);
            }

            file.close();
        }

そのようなばかげた質問で申し訳ありません。私は初心者です

4

1 に答える 1

2

アップデート

アプリケーションの実行時にファイルが確実addrr.txtに見つかるようにするには、次のことを行う必要があります。

  • ファイルへの絶対パスを指定します。つまりD:\addrr.txt、または
  • 現在の作業ディレクトリ (CWD) からの相対パスを指定しますC:\Program Files\Mozilla FireFox。(ファイルが別のパーティションにある場合、これは実用的ではありません。)

CWD は通常、アプリケーションが実行されるディレクトリです。アプリケーションを実行する場合は、動作するD:はずです。(アプリケーションは、実行時に CWD を変更する場合があります (たとえば、chdir()、 またはを使用SetCurrentDirectory())。ただし、通常は、ファイルへの絶対パスを指定するか、CWD に対する正しい相対位置にファイルを配置する方が適切です。)


これは私にとっては問題なくコンパイルおよび実行されます。

#include <fstream>
#include <iostream>
#include <string>
using namespace std;

int main() {
  ifstream file;
  file.open("addrr.txt", fstream::in | fstream::out);
  if (file.is_open())
  {
    while (file.good())
    {
      string Path;
      cout << "Addrr.txt IsGood" <<endl;
      getline(file, Path);
      cout << Path << endl;
    }
    file.close();
  }
}

// output similar to:
/*
Addrr.txt IsGood
addrr.txt
Addrr.txt IsGood
addrr.txt
Addrr.txt IsGood
addrr.txt
Addrr.txt IsGood

Addrr.txt IsGood

*/


// file: addrr.txt
/*
addrr.txt
addrr.txt
addrr.txt

*/

ファイル名は正しいですか (つまり、大文字と小文字を区別しますか)。実行可能ファイルが配置されているパスからアプリケーションを実行しますか (ファイルは現在の作業ディレクトリにあります)?

于 2012-07-02T07:32:23.567 に答える