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::boolalpha
:http://en.cppreference.com/w/cpp/io/manip/boolalpha
您的读取运算符 dataFile >> mainString >> first >> second >> truth
总是失败,因为它无法读取布尔值 'true/false'。如果要将布尔值读取为文本
,则应使用 std::boolalpha
修饰符
dataFile >> mainString >> first >> second >> std::boolalpha >> truth;
我无法理解为什么我的程序没有输出。 有人可以指出我忽略的规则吗?如您所见,我在 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::boolalpha
:http://en.cppreference.com/w/cpp/io/manip/boolalpha
您的读取运算符 dataFile >> mainString >> first >> second >> truth
总是失败,因为它无法读取布尔值 'true/false'。如果要将布尔值读取为文本
std::boolalpha
修饰符
dataFile >> mainString >> first >> second >> std::boolalpha >> truth;