2016-04-18 92 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;