(C ++)我的saveGame()函数有什么问题?当我调用该函数时,其中没有任何内容运行但没有错误?

时间:2016-07-31 04:36:22

标签: c++ function file save fstream

我已经尝试了几乎所有的东西,但我无法弄清楚为什么当我调用它时这个函数不会做任何事情。正确调用该函数:saveGame(hscore, selectedSaveSlot);hscoreselectedSaveSlot也已正确定义为int。此外,此函数在switch语句中的另一个函数内调用。有没有人有任何想法,为什么它不起作用?

(即当调用此函数时,cout没有说任何内容而且没有创建保存文件,代码只是跳过它并继续无缝运行。

void saveGame(int highscore, int saveSlot) {        
ofstream saveFile1;
ofstream saveFile2;
ofstream saveFile3;
switch (saveSlot) {  
case '1':

    saveFile1.open("SaveFile1.txt", ios::out);



        saveFile1 << highscore;//writing highsore to a file

        saveFile1.close();
        cout << "Your game has been saved successfully!" << endl;
        delayScroll(10, 50);

        break;
case '2':
    saveFile2.open("SaveFile2.txt", ios::out);



        saveFile2 << highscore; //writing highsore to a file

        saveFile2.close();
        cout << "Your game has been saved successfully!" << endl;
        delayScroll(10, 50);

        break;
case '3':
    saveFile3.open("SaveFile3.txt", ios::out);



        saveFile3 << highscore; //writing highsore to a file

        saveFile3.close();
        cout << "Your game has been saved successfully!" << endl;
        delayScroll(10, 50);

        break;
    }
inMenu = true;
}

1 个答案:

答案 0 :(得分:2)

您可能正在使用整数1,2,3等调用saveGame但是,'1'1不相同。第一个(带引号)是ASCII值为49的字符,第二个是整数。在交换机内部,您使用的是字符'1', '2', '3'。如果您分别致电saveGame(highscore, 49)saveGame(highscore, 50)saveGame(highscore, 51),它们将匹配。但他们不会与saveGame(highscore, 1)saveGame(highscore, 2)saveGame(highscore, 3)匹配。

简而言之,这些都是真的:

'1' != 1
'2' != 2
'1' == 49

将您的案例更改为使用实际整数。