2016-04-27 7 views
0

に保存するには、私は形式であると予想されるテキスト入力ファイルから読み込むプログラムがあります。は、テキストファイルから読み込まれ、現在は二、三の変数

add A B 
add A C 
add B D 
breadth A 
depth A 
remove A B 
add B A 
breadth B 
depth B 

をしかし、私は私のプログラムに書きました:それは、このような「幅のA」または「深さA」として、ちょうど2つの変数を持つテキストファイルの行に到達したとき

もちろん
int main(int argc, char **argv){ 

     ifstream fin(argv[1]); 

     string cmnd; 
     char v1, v2; 


     while (fin >> cmnd >> v1 >> v2){ 

        if (cmnd == "add"){ 
          //do something 
        } 

        if (cmnd == "remove"){ 
          //do something 
        } 

        if (cmnd == "breadth"){ 
          //do something 
        } 

        if (cmnd == "depth"){ 
          //do something 
        } 
     } 

は、それが終了します。誰かが私にすぐに私に私がすぐにそれを修正するためにreadthと深さのための2番目のネストされたwhileループを追加できることを提案しましたが、私は追いついていませんでした。変数は2つまたは3つだけになります。どんな助けもありがとう!

答えて

1

私は次のように周りの仕事を得るために管理:

int main(int argc, char **argv){ 

      ifstream fin(argv[1]); 

      string cmnd; 
      char v1, v2; 

      while (fin >> cmnd){ 

       if (cmnd == "add"){ 
        (fin >> v1 >> v2); 
        //do something 
       } 

       if (cmnd == "breadth"){ 
        (fin >> v1); 
        //etc... 
       } 

} 
1

問題は空白です。改行も空白であることを忘れないでください。何がうまくいかないかを見るには、すべての改行をスペースに変換し、プログラムを歩きます。あなたがbreadth Aあなたの変数は、以下が含まれます読んでいる時点で:

cmnd="breadth" 
v1='A' 
v2='d' // from depth 

これは、フレーミングエラーです。オプションの入力が改行で終わっているので、istream::getline()を見るかもしれません。