Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

حل مشكلة عدم القدرة على القراءة من ملف في ++C

السلام عليكم و رحمة الله و بركاته.

أنا أعمل على لعبة تجارة بسيطة باستخدام الكونسول في ++C فقط من باب المتعة.

و لكن واجهتني مشكلة و هي:

قمت بعمل دالة تعمل save (أي تقوم بالكتابة في بعض الملفات مثل ملفات البضائع و ملف النقود). و أردت أن أعمل دالة أخرى مهمتها عمل load للعبة.

هذه الدالة عند استدعائها أمرر لها 3 باراميترات، و هي:

1- كائن من الكلاس ifstream للقراءة من الملفات.

2- متغير نوعه const char* و هو الذي ستقوم الدالة ()open بفتحه.

3- متغير نوعه double و هو الخاصية التي أريد القراءة من ملف، و جعل الرقم الموجود في الملف يساويها.

هذه بعض الأكواد من اللعبة:

#include <fstream>
#include <iostream>
using namespace std;
class Game {
public:
double money;
ofstream save_money;
ifstream load_money;
void save(ofstream& writeFile, const char* path, double property) {
writeFile.open(path);
if (writeFile) {
cout << "Connected\n";
writeFile << property;
writeFile.close();
} else {
perror("Error");
}
}
// load هذه هي الدالة التي ستعمل
void load(ifstream& readFile, const char* path, double property) {
readFile.open(path);
if (readFile) {
cout << "Connected\n";
readFile >> property;
readFile.close();
} else {
perror("Error");
}
}
void theGame() {
string ask;
cout << "What you want to do?\n";
getline(cin, ask);
if (ask == "save") {
save(save_money, "Money.txt", money);
} else if (ask == "load") {
load(load_money, "Money.txt", money);
cout << "Money = " << money;
} else {
cout << "Not a word\n";
}
}
};
int main() {
Game game;
game.theGame();
return 0;
}
#include <fstream> #include <iostream> using namespace std; class Game { public: double money; ofstream save_money; ifstream load_money; void save(ofstream& writeFile, const char* path, double property) { writeFile.open(path); if (writeFile) { cout << "Connected\n"; writeFile << property; writeFile.close(); } else { perror("Error"); } } // load هذه هي الدالة التي ستعمل void load(ifstream& readFile, const char* path, double property) { readFile.open(path); if (readFile) { cout << "Connected\n"; readFile >> property; readFile.close(); } else { perror("Error"); } } void theGame() { string ask; cout << "What you want to do?\n"; getline(cin, ask); if (ask == "save") { save(save_money, "Money.txt", money); } else if (ask == "load") { load(load_money, "Money.txt", money); cout << "Money = " << money; } else { cout << "Not a word\n"; } } }; int main() { Game game; game.theGame(); return 0; }

المشكلة هي أنني عندما أكتب save و أتفقد الملف Money.txt أرى أنه تم حفظ قيمة النقود في الملف.

و لكن عندما أخرج وأدخل مرة أخرى (تكون قيمة النقود هي الافتراضية في الكونسول) وأكتب load حتى تظهر قيمة النقود التي عملت لها save، لا يحدث شيئ.

يظهر لي البرنامج كلمة "Connected" و لكن لا تتغير قيمة النقود كما يجب.

أرجو المساعدة و أتمنى أن يكون السؤال مفهوم.

تعليقات 1

أضف تعليق

يجب تسجيل الدخول حتى تتمكن من إضافة تعليق أو رد.