c++斗地主加载游戏记录文件读取代码
时间: 2023-08-24 12:24:53 浏览: 162
斗地主c++游戏代码资源
5星 · 资源好评率100%
假设我们将游戏记录保存在名为game_records.txt的文本文件中,每条记录占据一行,格式为“玩家1(底分)vs玩家2(底分)vs玩家3(底分):出牌顺序:玩家1->玩家2->玩家3;出牌情况:...;胜利者:玩家2”,则可以使用以下代码读取游戏记录:
```cpp
#include <fstream>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
struct GameRecord {
vector<pair<string, int>> players; // 玩家列表,存储玩家姓名和底分
vector<string> playOrder; // 出牌顺序
string playRecord; // 出牌情况
string winner; // 胜利者
};
int main() {
ifstream ifs("game_records.txt"); // 打开文件
if (!ifs) { // 判断文件是否成功打开
cout << "Failed to open file!" << endl;
return 1;
}
vector<GameRecord> gameRecords; // 存储游戏记录
string line;
while (getline(ifs, line)) { // 逐行读取文件内容
GameRecord record;
string playerName;
int playerScore;
// 读取玩家列表
size_t pos = 0;
while ((pos = line.find("(")) != string::npos) {
playerName = line.substr(0, pos);
line = line.substr(pos + 1);
pos = line.find(")");
playerScore = stoi(line.substr(0, pos));
record.players.push_back(make_pair(playerName, playerScore));
line = line.substr(pos + 1);
}
// 读取出牌顺序
pos = line.find("出牌顺序:");
line = line.substr(pos + 5);
pos = line.find(";");
while (pos != string::npos) {
record.playOrder.push_back(line.substr(0, pos));
line = line.substr(pos + 1);
pos = line.find(";");
}
// 读取出牌情况
pos = line.find("出牌情况:");
record.playRecord = line.substr(pos + 5);
// 读取胜利者
pos = line.find("胜利者:");
record.winner = line.substr(pos + 4);
gameRecords.push_back(record);
}
ifs.close(); // 关闭文件
// 使用读取到的数据
cout << "Game records:" << endl;
for (auto record : gameRecords) {
cout << "Players: ";
for (auto player : record.players) {
cout << player.first << "(" << player.second << ") ";
}
cout << endl;
cout << "Play order: ";
for (auto player : record.playOrder) {
cout << player << "->";
}
cout << endl;
cout << "Play record: " << record.playRecord << endl;
cout << "Winner: " << record.winner << endl;
cout << endl;
}
// ...
return 0;
}
```
在上面的代码中,我们使用ifstream类打开了名为game_records.txt的文件,并逐行读取了其中的内容。我们将每条记录存储在一个GameRecord结构体中,并将所有记录存储在gameRecords向量中。最后,我们输出了读取到的数据。如果文件打开失败,我们就输出一段错误信息。最后,我们关闭了文件。
阅读全文