ifstream变量循环什么都不打印

时间:2016-04-18 03:19:58

标签: c++ ifstream cout

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

let allTouches = event?.allTouches
let myTouch = allTouches?.first

data.txt中:

#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;
}

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

要从这样的文本中读取布尔值,必须使用I / O操纵器std::boolalpha e.g

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

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