gpt4 book ai didi

c++ - 用eof和sentinel infile

转载 作者:行者123 更新时间:2023-11-28 05:27:01 25 4
gpt4 key购买 nike

我正在读取一个文件,并且在这个 .dat 文件的中间有一个标记。第一部分是变量和它们要分配的值。我正在获取变量及其值。这是我的。

int main() {
ifstream infile;
string variable;
int value;

infile.open("test.dat");

while (infile.peek() != EOF) {

infile >> variable;
infile >> value;

}



return 0;
}

这是 .dat 文件

f 32
h 3
l -2
q 3
v 5
$
lqv
hfv
vvf
vfl

我的第一个想法是使用 while 循环。是 while (variable != "$") 但当我这样做时,我陷入了无限循环。所以我完全不知道如何获取和分配变量,然后获取 .dat 文件的其余部分。

由于我不想对变量进行硬编码,因此我不得不稍微更改一下。我将使用 2 个循环。一个在 $ 之前,一个在 $ 之后。当我尝试 while (infile != "$") 时,我得到了一个无限循环。

最佳答案

我建议如下,读入第一个变量名,必要时读入值:

while (infile >> variable)
{
if (variable != "$")
{
infile >> value;
}
else
{
break;
}
}

std::map 对于将变量名关联 到值非常有用:

std::map<std::string, double> dictionary;
while (infile >> variable)
{
if (variable != "$")
{
infile >> value;
dictionary[variable] = value;
}
else
{
break;
}
}

语法 infile >> variable 是一种更可靠的从文件中读取的方法。

关于c++ - 用eof和sentinel infile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40331541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com