【发布时间】:2019-11-29 23:12:16
【问题描述】:
总结:
1 - 带变量的结构
2——给变量赋值
3 - 文件中的无效保存变量
4 - 将值更改为变量
5 - void将值加载到变量中
6 - 我显示值
我的问题是:我正在创建一个系统,用于在 C++ 中使用代码块保存和加载“游戏”。一个简单的代码用于创建有问题的系统,但也用于在 .txt 或 .dat 的结构(几乎都是 int)中容纳的变量的值。
#include<iostream>
#include<fstream>
using namespace std;
///GAME VAR
struct NewGame{
float tipo;
float health;
};
///SAVE_LOAD
void saveGame( NewGame G );
void loadGame( NewGame ( & G ) );
int main(){
///STRUCT
NewGame G;
///VALUE ASIGN (TEST)
cout << "Ingrese tipo [1] [2] [3]" << endl;
cin >> G.tipo;
cout << "Ingrese vida"<<endl;
cin >> G.health;
///SAVE STRUCT
saveGame( G );
///CHANGE VALUES
G.health = 0;
G.tipo = 0;
///LOAD STRUCT <-----HERE'S THE PROBLEM
loadGame( G );
///TEST VALUES
cout << "HEALTH: " << G.health << endl;
cout << "TYPE: " << G.tipo << endl;
return 0;
}
///SAVE
void saveGame( NewGame G){
ofstream s;
s.open("save.txt");
s << G.health << endl;
s << G.tipo << endl;
s.close();
};
///LOAD
void loadGame( NewGame ( & G ) ){
ifstream l;
l.open("save.txt");
l >> G.health;
l >> G.tipo;
l.close();
};
我已经尝试了几种方法,在binary和txt中问题总是一样的,数据保存了,加载新游戏后测试了值,变量的值没有恢复。
【问题讨论】:
-
你对函数的使用,虽然在技术上是有效的,但是很不正常。任何好的介绍性材料都会使用
void saveGame(NewGame G);之类的语法来声明它,并使用saveGame(G);来调用它。 -
谢谢,我已经更正了,它看起来更好了,但问题仍然存在。错误一定是在使用 ifstream 中,或者在值的分配中,我想...
-
尝试以附加模式打开输出文件(即
s.open("save.txt", ios_base::app)) -
加载时传递
G作为参考 -
非常感谢@Arne。这就是我需要的解决方案