C++ C++;如何使用void调用ifstream?

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 ){

总之:

1-带变量的结构

2-赋值​​到变量

3-在文件中无效保存变量

4-更改值​​到变量


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();
}