C++ C++;如何使用void调用ifstream?
总之: 1-带变量的结构 2-赋值到变量 3-在文件中无效保存变量 4-更改值到变量C++ C++;如何使用void调用ifstream?,c++,struct,void,C++,Struct,Void,总之: 1-带变量的结构 2-赋值到变量 3-在文件中无效保存变量 4-更改值到变量 5-空隙荷载值进入变量,因为您正在将G的副本传递到loadgame()函数中。尝试 void loadGame(NewGame&G)取而代之。所以,我本来打算放弃回答自己的问题,只是投票给当前的答案,但我想我需要解决一些当前答案没有解决的问题 问题根本不在于ifstream。如果查看loadGame()内部的G值,应该可以: ///LOAD void loadGame( NewGame G ){
5-空隙荷载值进入变量,因为您正在将
G
的副本传递到loadgame()
函数中。尝试
void loadGame(NewGame&G)
取而代之。所以,我本来打算放弃回答自己的问题,只是投票给当前的答案,但我想我需要解决一些当前答案没有解决的问题
问题根本不在于ifstream
。如果查看loadGame()
内部的G
值,应该可以:
///LOAD
void loadGame( NewGame G ){
ifstream l;
l.open("save.txt");
l >> G.health;
l >> G.tipo;
l.close();
// My additions: print the value of the variables stored in G
std::cout << "Health: " << G.health << "\n";
std::cout << "Tipo: " << G.tipo << "\n";
}
这将允许您从
main()
访问放入G
的值。您使用的函数虽然在技术上有效,但非常不正常。任何好的介绍材料都会使用类似于void saveGame(NewGame G)的语法代码>声明,并保存游戏(G)代码>调用它。谢谢,我已经更正了它,它看起来更好了,但问题仍然存在。错误一定是在使用ifstream时出现的,或者是在赋值时出现的,我想……试着在追加模式下打开输出文件(即s.open(“save.txt”,ios_base::app)
)当你加载时,作为参考传递G
,非常感谢,@Arne。这就是我需要的解决方案
///LOAD
void loadGame( NewGame G ){
ifstream l;
l.open("save.txt");
l >> G.health;
l >> G.tipo;
l.close();
// My additions: print the value of the variables stored in G
std::cout << "Health: " << G.health << "\n";
std::cout << "Tipo: " << G.tipo << "\n";
}
///LOAD
void loadGame( NewGame& G ){ // a single & makes all the difference here
ifstream l;
l.open("save.txt");
l >> G.health;
l >> G.tipo;
l.close();
}