2016-11-21 13 views
0

私の質問に対する答えを探していますが、他の場所では見つかりませんでした。.txtファイルを読む際の問題

私のプロジェクトファイルと同じディレクトリにある.txtファイルから読み込もうとしています。

私はこの単純なコードを書いた:

ifstream file("file.txt"); 
std::string line; 
std::getline(file, line); 
cout << line; 

を...残念ながら、何も、いなくてもエラーやクラッシュが起こっていません。

もう少し探ってみると、txt( "file")ファイルの名前を、存在しないファイルの名前に変更しても何も起こりません。

私には何が欠けていますか?

答えて

-2

ファイルを開くときにエラーが発生した場合は、provide full path to the fileをチェックしてください。

あなたのコードでは最初の行を読み込んでいるので、空白の場合は出力として何も見えません。

最後の行まで(ファイルEOFの終わりに達するまで)各行を反復処理する必要があります。

// let's say your file is "test.txt" which is located in D\\MyDB 
// ifstream file("file.txt"); 

ifstream file("D:\\MyDB\\test.txt"); // use full path instead and check manully whether the file is there or not 
std::string line; 

if(file.fail()) 
    cout << "Opening file failed!" << endl; 
else 
    while(std::getline(file, line)) 
    { 
     cout << line; 
    } 

完全パスを指定すると動作する場合、現在のパスはプロジェクトと同じではありません。

は、Windows上にある場合は、次に使用するので、あなたには、いくつかのAPIを使用して現在のディレクトリを変更することができますSetCurrentDirectory(path);とLinuxの使用上の:chdir(sDirectory.c_str());

**私はコンパイラを意味するものではありませOS速いanswer.toため

+0

まだ成功していない、私は今この行を書いた:cout << "error opening file:" << strerror(errno);と私は持っています: "いいえ、そのようなファイルやディレクトリ"、私は恋しいですか? – Realto

+0

@Realtoあなたのファイルは完全なパスを追加してください。 – Raindrop7

+0

/Users/John/ClionProjects/MyProject – Realto

0

どのようにエラーがなかったのですか?あなたはチェックしなかった。

#include <cerrno> 

、次いで

ifstream file("file.txt"); 
if (file) // is the file readable? 
{ 
    std::string line; 
    if (std::getline(file, line)) // did we manage to read anything? 
    { 
     cout << line; 
    } 
    else 
    { 
     cout << "File IO error"; 
    } 
} 
else 
{ 
    cout << "error opening file: " << strerror(errno); 
} 

基本的なチェックを行います。

+0

感謝より明確になる、プログラムがクラッシュせずに実行されますが、私はあなたのコードを実行するときに私は "エラーファイルを開く"を得た。どうやって間違っているのか分かりますか? – Realto

+0

@Realto *ファイルを開くことができなかった理由を表示するコードをいくつか追加しました。 – user4581301

+0

大丈夫ですので、私はこのエラーがあります: "そのようなファイルやディレクトリはありません"、なぜ購入するのですか?私はすべてのプロジェクトファイルを含むディレクトリにファイルを置く、私は何かが恋しい? – Realto

関連する問題