ifstream 变量循环不打印任何内容

ifstream variable loop prints nothing

我无法理解为什么我的程序没有输出。 有人可以指出我忽略的规则吗?如您所见,我在 class 中读取了一个文件,并通过公开继承的 subclass 访问相同的 classes 打印函数。

#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

要像这样从文本中读取布尔值,您必须使用 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

您的读取运算符 dataFile >> mainString >> first >> second >> truth 总是失败,因为它无法读取布尔值 'true/false'。如果要将布尔值读取为文本

,则应使用 std::boolalpha 修饰符
 dataFile >> mainString >> first >> second >> std::boolalpha >> truth;