2017-03-02 14 views
2

ここで初心者をコーディングしています。 C++は私の最初の言語です。可能であれば、説明を含めてください。ファイルからの読み込みC++(行ごとに - 混合変数)

私は、混合変数を含むファイルから行を読みなければなりません。私は現在2つの問題に直面しています:

  1. すべての行を読むことができるように入力文をループします。私は、これは次の文字を確認する必要があることを理解して、そのENDOFFILEた場合、それがループを中断します

    while(inputFile.peek() != EOF)

が、私はそれを得ることができない:私はループを行うには、次のコードを使用するように制限しています働く

  1. bool(空白をスキップする)の前に文字列を読み込む。空白をスキップするには、私が使用するようになっています:以下のように

    while(inputFile.peek() == ' ') inputFile.get();

ファイルの内容は以下のとおりです。

Car CN 819481 maintenance false NONE 
Car SLSF 46871 business  true  Memphis 
Car AOK  156 tender  true  McAlester 

私のコードは以下の通りです。私はmain()関数を唯一のものとして省略しました。input()です。だから、最初の行はbool値まで読みます(そして最後の文字列を省略します)、およびループが動作していない(またはそれ

Car CN 819481 maintenance false 

:私は取得プログラムを実行した後

#include <iostream> //used in main() 
#include <iomanip> 
#include <string> 
#include <fstream> //to work with file 
#include <cstdlib> //for exit() function 
using namespace std; 

void input(){ 
    ifstream inputFile; 
    string type, rMark, kind, destination; 
    int cNumber; 
    bool loaded; 

    inputFile.open("C:\\My Folder\\myFile.txt"); //open file 

    if (!inputFile){ 
     cerr << "File failed to open.\n"; 
     exit(1); 
    } 

    //read file contents 
    while(inputFile.peek() != EOF){ 
    //initially I had >>destination in the statement below as well 
    //but that gave me the same results. 
     inputFile >> type >> rMark >> cNumber >> kind >> loaded; 

    //skip whitespace 
     while(inputFile.peek() == ' '){ 
      inputFile.get(); 
      } 
    //get final string 
     getline(inputFile, destination); 
     cout << type << " " << rMark << " " << cNumber << " " << kind << " "; 
     cout << boolalpha << loaded << " " << destination << endl; 
    } 

    inputFile.close(); //close file 
} //end input() 

それは読んではならないものですか?)。私は.peek()と.gets()を動かそうとしましたが、何の組み合わせもうまくいきませんでした。

ありがとうございます!

答えて

2

あなたは、出力のためにやったように、あなたの入力文でstd:boolalphaを使用する必要があります。

inputFile >> type >> rMark >> cNumber >> kind >> boolalpha >> loaded; 

そうでない場合は、C++は「ブール変数を読み込むとき、「0」または「1」を参照する予定はなく、 「偽」または「真」。

+0

ありがとうございました。今すぐ動作します:) – gboyn

+0

動作する場合は、アップホートして回答を受け入れる必要があります。 – user31264

+0

受け入れ方が不明 - このウェブサイトの新機能 EDIT:見つかりました – gboyn

関連する問題