2016-04-18 3 views
0

私のプログラムに出力がない理由を理解できません。 誰かが見落としているルールを指摘できますか?ご覧のとおり、クラス内のファイルを読み込み、継承されたサブクラスを通して同じクラスのprint関数にアクセスします。ifstream変数ループで何も印刷されない

#include <string> 
#include <iostream> 
#include <fstream> 

class mainClass 
{ 
public: 
    void print(); 
    void read(); 
    std::ifstream dataFile; 

protected: 
    double first, second; 
    std::string mainString; 
    bool truth; 
}; 

void mainClass::read() 
{ 
    dataFile.open("data.txt"); 
} 

void mainClass::print() 
{ 
    while (dataFile >> mainString >> first >> second >> truth) 
    { 
     std::cout << mainString << first << second << truth; 
    } 
} 

int main() 
{ 
    mainClass instance; 
    instance.read(); 
    instance.print(); 
    return 0; 
} 

data.txtを:

Pie 3.14515 69 true 
Apple 4.234 42 true 
Potato 5 4.532 false 
Carrot 55 1.2204 true 
Corn 7.53221 12 false 
+1

'data.txt'のコンテンツを共有できますか? – Mureinik

+0

質問を編集して追加しました。 – Lloyd

答えて

0

このようなテキストからブール値を読み取るには、I/Oマニピュレータstd::boolalphaを使用する必要があります。例えば、std::boolalphaため

dataFile >> std::boolalpha; 
while (dataFile >> mainString >> first >> second >> truth) 
{ 
    std::cout << mainString << first << second << std::boolalpha << truth; 
} 

参考:http://en.cppreference.com/w/cpp/io/manip/boolalpha

1

あなたの読書オペレータdataFile >> mainString >> first >> second >> truthそれは読むことができませんので、必ず失敗するブール値 '真/偽'。ブール値をテキストとして読み取る場合は、std::boolalpha修飾子を使用する必要があります。

dataFile >> mainString >> first >> second >> std::boolalpha >> truth; 
関連する問題