2009-08-09 9 views
-1

私は、ユーザーにファイル名を尋ねて、ファイルから入力を取得し、それを別の関数で使用するメンバー関数を持っています。各関数は、charまたはcharを取ります。しかし、その機能を実行していない。私はsstreamがファイルからデータを取り出して文字化することと関係があると思いますか? sstreamを使用してファイルから要素を分離し、それらの要素をcharとして使用することは可能ですか?sstreamの質問付き文字

void My_Function::file() 
{ 
    fstream data;//file input 
    char filename[80]; 
    string line; 
    int first; 
    char sec, third, fourth; 

    cout<<"Enter file name: \n"; 
    cin>>fileName; 
    data.open(fileName); 

    while(getline(data,line)) 
    { 
     stringstream str(line); 
     istringstream ins; 
     ins.str(line);//get line 
     str >> first >> sec >> third >> fourth; 

     switch(first) 
     { 
      case 1: 
        add(sec); 
        break; 
      case 2: 
        delete_item(sec, third); 
        break; 
      case 3: 
        print_everything(sec, third); 
        break; 
      case 4: 
        makenew(sec, third); 
        break; 
      case 5: 
        find(sec, third, fourth); 
        break; 
      case 0: 
        break; 
     } 
    } 
} 
+0

は、バッファオーバーフローを防ぐために、 'fileName'文字列を作る考えてみましょう。 – outis

答えて

0
書かれたとしてあなたのコードがコンパイルされません

が、「ファイル名」/「FILENAME」の問題を修正した後、それは私には思えるこの特定の部分は、行うことになっているものないこと。あなたはあなたの質問を明確にしようと思うべきですし、あなたが何を期待しているのか、それが実際にどういうのかを説明することを検討すべきです。 「実際には関数を実行していない」ということが本当に何を意味するのかは不明です!これらのようなものをテストする

は、あなたが変更する場合があります

cout << "delete_item(" << sec << ", " << third << ")\n"; 
+0

私はこれを試して、ファイルからのすべての入力はどこにあるべきかです。これはメモリタイプを変更しますか? stringstream str(line); istringstream ins; ins.str(line); //行を取得 str >> first >> sec >> third >> fourth; –

0

delete_item(sec, third); 

のような行を変更すると便利な場合があり

stringstream str(line); 
istringstream ins; 
ins.str(line);//get line 
str >> first >> sec >> third >> fourth; 

istringstream ins(line); 
ins >> first >> sec >> third >> fourth; 
+0

私はこれを試しました、それは何かをします。 intは動作しますが、charはそのジョブを実行していないようです。 –

1

あなたの問題はデータにあると思います。あなたのコードを動作させるには、次のように書かなければなりません:

0 1 2 3 
1 1 2 3 
2 1 2 3 
3 1 2 3 
4 1 2 3 
5 1 2 3 

私たちがチェックするデータのサンプルを投稿してください。

このコードは、これらのデータと期待通りに動作します(coutsとメインでコード):

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

int main() 
{ 
    fstream data;//file input 
    char fileName[80]; 
    string line; 
    int first; 
    char sec, third, fourth; 

    cout<<"Enter file name: \n"; 
    cin>>fileName; 
    data.open(fileName); 

    while(getline(data,line)) 
    { 
     stringstream str(line); 
     istringstream ins; 
     ins.str(line);//get line 
     str >> first >> sec >> third >> fourth; 

     cout << "line = " << str.str() << endl; 

     switch(first) 
     { 
      case 1: 
        cout << "add(sec); " << sec << endl; 
        break; 
      case 2: 
        cout << "delete_item(sec, third); " << sec << ", " << third << endl; 
        break; 
      case 3: 
        cout << "print_everything(sec, third); " << sec << ", " << third << endl; 
        break; 
      case 4: 
        cout << "makenew(sec, third);" << sec << ", " << third << endl; 
        break; 
      case 5: 
        cout << "find(sec, third, fourth); " << sec << ", " << third << ", " << fourth << endl; 
        break; 
      case 0: 
        cout << "0" << endl; 
        break; 
     } 
    } 
} 

出力で:

Enter file name: 
toto 
line = 0 1 2 3 
0 
line = 1 1 2 3 
add(sec); 1 
line = 2 1 2 3 
delete_item(sec, third); 1, 2 
line = 3 1 2 3 
print_everything(sec, third); 1, 2 
line = 4 1 2 3 
makenew(sec, third);1, 2 
line = 5 1 2 3 
find(sec, third, fourth); 1, 2, 3 
line = 
find(sec, third, fourth); 1, 2, 3