2016-04-18 20 views
0

我無法理解爲什麼我的程序沒有輸出。 有人可以指出我忽略的規則嗎?正如你所看到的,我在一個類中讀取一個文件,並通過公開繼承的子類訪問相同的類打印功能。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例如

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

參考爲std::boolalphahttp://en.cppreference.com/w/cpp/io/manip/boolalpha

1

您的閱讀操作dataFile >> mainString >> first >> second >> truth總是失敗,因爲它無法讀取布爾值 '真/假'。你應該使用std::boolalpha修飾符,如果你想讀取布爾值作爲文本

dataFile >> mainString >> first >> second >> std::boolalpha >> truth;