2017-07-08 9 views
-1

Visual Studioでテキストファイルを読み込むことができません。以下は私のコードです。ファイルはUnix環境では完全に開きますが、コピーしてVisual Studioに貼り付けると機能しません。私はファイルを開くためにfstreamを使用しています。なぜファイルが読み込まれていないのですか?C++でVisual Studioでテキストファイルを読むときに問題が発生する

私はプログラムを実行するとビルドされますが、出力はありません。出力文cout << "inf\n"があります。だから、ループにも到達していない、それは私がファイルが読み取られていないと考えている理由です。 Unix環境で同じコードを実行すると、出力文が表示され、ファイルの値が(tree.insert()、tree.remove()を介して)表示されます。

this linkで解決策を試しました。私の作業ディレクトリを$(ProjectDir)\ Debugと$(ProjectDir)\ Releaseに変更しました。また、テキストファイルをResourcesフォルダからソリューションエクスプローラのソースフォルダに移動しました。ただし、ファイルはまだ読み込まれていませんでした。

fstream inf( "BTREE5_1.txt")の直後にcerr << "Error: " << strerror(errno);を含めるようにコードを更新しました。このコード行で、私が手出力は

Error: No such file or directory

で誰かが理由を説明していただけますか?私のテキストファイルは、上記で説明した私のコードと同じフォルダにあります。

#define _CRT_SECURE_NO_WARNINGS 
#include <fstream> 
#include <iostream> 
#include <cstdlib> 
#include <cstdio> 
#include "BTree.h" 

using namespace std; 

int main() 
{ 
bool first = true; 

BTree tree(6, 2); 
int value; 
char s[80], command; 

ifstream inf("BTree5_1.txt"); 
cerr << "Error: " << strerror(errno); 


inf.getline(s, 80); 

while (inf >> command >> value) 
{ 
    cout << "inf\n"; 
    if (command == 'i') 
     tree.insert(value); 
    else 
    { 
     if (first) 
     { 
      cout << "After all insertions.\n"; 
      tree.print(); 
      first = false; 
     } // if first 

     cout << "Deleting " << value << ". \n"; 
     tree.remove(value); 
     tree.print(); 
     // fgets(s, 80, stdin); 
    } // else deletion 
} // while 
system("PAUSE"); 
return 0; 
} // main 
+0

あなたがプログラムを実行するとどうなりますか? – Frank

+3

"トラブル"と "うまくいかない"とは、記述的に反対です。 *実際に何がうまくいかない?もしあなたがどんなアウトプットを得たら?あなたは、動作していないテキストファイルの例を含めることができますか? –

+0

'strerror(errno);'を使用してエラーコードを確認してください。おそらくファイルパスの問題です。代わりに、相対パスではなく完全パスを指定することで同じことを検証することもできます。 –

答えて

0

問題は、テキストファイルをUnix環境からコピーして貼り付けたことです。これを修正するために、Cドライブからテキストファイルをディレクトリに配置しました。

すなわち>)C:\プロジェクト\ Visual Studioの2015 \ Users \ユーザーs.proctorの\ドキュメント\ ecs60 \ P2 \ P2 \ P2

関連する問題