我已经尝试了几乎所有的东西,但我无法弄清楚为什么当我调用它时这个函数不会做任何事情。正确调用该函数:saveGame(hscore, selectedSaveSlot);
(hscore
和selectedSaveSlot
也已正确定义为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;
}
答案 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
将您的案例更改为使用实际整数。