c++ - 使用 fscanf 设置不同类中的变量

标签 c++ class

我正在尝试从文件中读取数字并将其设置为不同类中的public 变量。读取文件的函数有一个该类的指针对象实例。我遇到了一个奇怪的问题:

以下作品:

int dummy;
fscanf(file,"%d",&dummy); // assume the file stores the number 10

globals->var = dummy;

cout << "variable is " << globals->var << endl; // this outputs 10 to console. great!

但是我将有很多fscanf 要做,我不想创建所有这些冗余的dummy 变量。我尝试了以下方法:

fscanf(file,"%d",&globals->var);
cout << "variable is " << globals->var << endl; // this outputs 2.9e-321 (aka junk)

有没有不起作用的原因?我是否需要像 globals->&var 那样做,或者类似的变体?我试图将它括在括号中,如下所示:&(globals->var),但这也不起作用。有没有这行不通的原因(我不必粘贴很多很多行代码)

谢谢!

最佳答案

正如您在评论中所说,var 的类型是 double。是的,这就是问题所在。你应该为它使用 %f

除此之外,我会给你一个建议:

更喜欢使用 C++ 流进行 I/O 工作。它们是类型安全的。如果您使用它们,您将不会遇到使用 fprintf 时遇到的问题。

这是你应该如何使用它:

std::ifstream file("filename.txt");
file >> globals->var; //don't worry about whether var is int, or double!

很酷,不是吗?

关于c++ - 使用 fscanf 设置不同类中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7540697/

相关文章:

c++ - 将文件中的整数读入数组

c# - Entity Framework 查询中new Class Name和new Class Name()的区别

c++ - 随机未在范围内声明

c++ - C++ 的 CXX 测试框架

c++ - 当我打开文件名在 std::string 中的 fstream 时,为什么会出现 "no matching function"错误?

C++:XCode EXC_BAD_ACCESS 问题

python - 如何在 Python 中将另一个类的属性值设置为属性

c# - 将嵌套的 JSON 反序列化为字典、字符串和类

python - 被定义类型的类常量

c++ - 如何使用 Luabind 和 C++ 创建 Assets 管理类?