2016-03-29 13 views
1

私は本当に苦しんでいますが、もともと日食自体に他の問題があった、それは解決されたようです。コードは私には見えますが(ファイルをロードするためのサンプルコードと比較して)、しかし、私が置くエラーは常に引き起こされるため、何もロードできません。ビルディングエラーatmはありません。私は間違って何をしていますか? eclipse(Mac)とCode :: blocks(win vm)の両方で試してみると、どちらも問題があるようです。データファイル自体は.cppファイルと同じフォルダにあります。ファイルを開くことができませんC++

#include <iostream> 
#include <string> 
#include <math.h> 
#include <fstream> 
using namespace std; 

int main() { 
    cout << "Choose which data file to load (1-4)" << endl; 
    int file; 
    cin >> file; 
    ifstream data; 

    switch (file) { 
     case 1: 
      data.open("dataSet1.txt"); 
     case 2: 
      data.open("dataSet2.txt"); 
     case 3: 
      data.open("dataSet3.txt"); 
     case 4: 
      data.open("dataSet4.txt"); 
    } 

    if (!data) { 
     cerr << "File not Loaded" << endl; 
     return -1; 
    } 

    string FullData[61]; 
    for (int i=0; i=60; i++){ 
     data >> FullData[i]; 
     cout << FullData[i] << endl; 

    } 

    return 0; 
} 

EDIT:エラーの表示を停止するプログラムを手に入れた、そしてそれはファイルをロードしているようだ、しかし私のアサイン/表示ループは、それが唯一の最後のデータがオーバーポイント表示として、今動作していないようですそしてもう一度。

+2

.cppではなく、ファイルが_executable_と同じフォルダに存在する必要があります。 – Nacho

+2

意図的に 'break'文を出力していますか? – callyalater

+2

私はそれが失敗を引き起こすかどうかは分かりませんが、 '4'以外の場合は、ストリームを閉じずにストリームを複数回開いて呼び出すことになります。 – NathanOliver

答えて

-2

あなたのような各ケース 後にbreak文を持っている必要があります。

case1://something; 
      break; 

、あなたはデータファイル自体

data.close(); 
+0

これはまだプログラムがデータセットをロードできない理由を説明しません。 – callyalater

+0

は、これらの両方の事柄を(それぞれのケースで区切って)追加しても違いはなく、ファイルをロードしません。 –

+0

指定されたパス@DariaDは、data.open( "C:\ Users \ Desktop \ dataset1.txt")のようにする必要があります。 data.close();を追加します。 return文の前に。 – Ajay

3

が同じであるクローズ()関数を使用してストリームを閉じる必要があります.cppファイルとしてのフォルダ

私のフォルダの.cppは重要ではないので、データセットファイルはコンパイルされたバイナリプログラムと同じフォルダになければなりません。

データセットファイルのあるディレクトリを指していない作業ディレクトリ設定があることもあります。 openメンバ関数に渡されているのはすべてstringです。つまり、その文字列の意味は環境設定によって決まります。

+0

これは問題の真の原因のようです。コンパイルされたプログラムは 'open'メソッドの文字列入力を受け取り、実行可能ファイルの' .DATA'または '.TEXT'セクションにエントリを作成します。最終的な実行可能ファイルには、文字列が実際に何を意味するかについての知識はありません。環境は、提供された文字列の意味を理解するためにどこにプログラムを指示するのに役立ちます。 – callyalater

関連する問題