20

ファイル名だけでなく、ファイルが存在するフルパスをユーザーに教えてもらいたい。この方法でファイルを開くにはどうすればよいですか?

これは次のようなものですか?

ifstream file;
file.open("C:/Demo.txt", ios::in);

これはうまくいかないようです。

4

5 に答える 5

21

通常、Windowsではパス区切り文字として円記号を使用します。それで:

ifstream file;
file.open("C:\\Demo.txt", ios::in);

C ++ソースコードで記述されている場合、円記号自体は二重引用符で囲まれた文字列内で特別な意味を持つため、円記号を使用する必要があることに注意してください。したがって、上記はファイルを参照していますC:\Demo.txt

于 2009-05-09T10:32:05.977 に答える
12

fstreamクラスでフルパスを使用できます。次のコードは、C:ドライブのルートにあるファイルdemo.txtを開こうとします。これは入力操作であるため、ファイルはすでに存在している必要があることに注意してください。

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

int main() {
   ifstream ifs( "c:/demo.txt" );       // note no mode needed
   if ( ! ifs.is_open() ) {                 
      cout <<" Failed to open" << endl;
   }
   else {
      cout <<"Opened OK" << endl;
   }
}

このコードはシステム上で何を生成しますか?

于 2009-05-09T10:31:50.673 に答える
2

コードは私には機能しているようです。@Ioharも同じだと思います。

コンパイルに必要なヘッダーが含まれているかどうかを確認します。コンパイルされている場合は、そのようなファイルがあるかどうか、名前などすべてが一致しているかどうかを確認し、ファイルを読み取る権限があるかどうかも確認してください。

クロスチェックを行うには、fopen で開くことができるかどうかを確認します。

FILE *f = fopen("C:/Demo.txt", "r");
if (f)
  printf("fopen success\n");
于 2011-02-17T14:31:39.060 に答える
0

この質問に対する別の見方は、誰かを助けるかもしれません:

私がここに来たのは、Windows 上の Visual Studio でデバッグを行っていたからです。このすべてと議論について混乱し/まし\\た (ほとんどの場合、問題になることはありません)。

私にとっての問題は、「現在のディレクトリ」がVisual Studioで必要なものに設定されていなかったことです。デフォルトは実行可能ファイルのディレクトリです (プロジェクトの設定方法によって異なります)。

変更方法: ソリューションを右クリック -> プロパティ -> 作業ディレクトリ

質問がWindows中心のように見えるため、それについて言及するだけです。これは、一般的にVisualStudio中心を意味し、このヒントが関連している可能性があることを示しています(:

于 2020-07-15T01:12:35.463 に答える