【发布时间】:2017-06-08 20:49:42
【问题描述】:
我是 C++ 编程新手,我不确定输入和输出流的工作原理。我想取一个txt文件,其中包含由分隔符(':')分隔的字符串和字符,以分配类成员变量。
到目前为止,我已经能够拥有一个每行包含一个双精度或整数的 txt 文件,并将它们分配给变量。目前我所拥有的:
当前的“Default.txt”
10
3
0.80
1.5
我目前用于变量赋值的代码:
#include <iostream>
#include <fstream>
RandomObject::RandomObject(){ //The Default Constructor
std::ifstream my_file;
my_file.open("Default.txt");
//Not sure if this the most effective way to do this...
if (my_file.is_open())
{
while (~my_file.eof())
{ my_file >> Var1; //Var1 is now an int with value 10
my_file >> Var2; //Var2 is now an int with value 3
my_file >> Var3; //Var3 is now double with value 0.80
my_file >> Var4; //Var4 is now double with value 1.5
break;
}
}
my_file.close();
}
现在我希望 txt 文件是:
新的“Default.txt”
每个维度的数量:10
维数:3
数字密度:0.80
初始温度:1.5
我想把冒号后面的值赋给一个成员变量:
int Var1 = 10;
int Var2 = 3;
double Var3 = 0.80;
double Var4 = 1.5;
以及一些指示变量初始化的输出文本:
“变量 1 设置为 10”
或
“每维数为 10”。
我该怎么做呢? txt 文件将以相同的顺序包含所有值,但如果可能的话,让程序读取“每维数”作为第一个字符串以自动将 10 分配给 Var1 可能会很有用。
我猜第一步是以某种方式将它分成两个字符串,以':'作为分隔符并将其存储在一些临时字符串数组变量中?我不确定读取行并将值存储在上面的代码中到底发生了什么。
我想了解文件流的实际工作原理。抱歉,格式不好。
【问题讨论】:
-
使用
while (!my_file.eof())而不是~,这是一种二进制反转,而不是逻辑反转。 -
不要在
while循环中使用my_file.eof()!
标签: c++ string file variables input