我有一个文本文件,其中包含以下格式的游戏高分:
Name Score
Name Score
Name Score
Run Code Online (Sandbox Code Playgroud)
文件按分数降序排列。
我想在文件中的正确位置插入一个新名称及其相应的分数,以便它保持正确的顺序。任何如何做到这一点的建议将不胜感激!
例如,给定以下文件:
Edward 100
David 90
Sarah 80
Alice 60
Run Code Online (Sandbox Code Playgroud)
我想补充一下。
Name = Jodi
Score = 70
Run Code Online (Sandbox Code Playgroud)
到文件,所以新文件读取:
Edward 100
David 90
Sarah 80
Jodi 70
Alice 60
Run Code Online (Sandbox Code Playgroud)
谢谢
目前我有以下代码:
string playerName = pPlayer->GetName();
int playerScore = pPlayer->GetScore();
std::ofstream score("scores.txt", std::ios_base::app | std::ios_base::out);
score << "\n" << playerName << " " << playerScore;
Run Code Online (Sandbox Code Playgroud)
这只是将名称添加到文件末尾。我考虑阅读整个文件并对其进行排序,然后对旧文件进行纠正。但我不想这样做,因为如果文件变大,可能需要很长时间。
我的代码是这样的:
type Code = [Inst]
data Inst = PUSH Int
| PUSHV Name
| POP Name
| DO Op
| JUMP Label
| JUMPZ Label
| LABEL Label
deriving Show
doJump :: Inst -> Code -> Code
doJump l c = case (elemIndex l c) of
Just n -> drop (n+1) c
Nothing -> c
Run Code Online (Sandbox Code Playgroud)
并且GHC给我发回了这个错误,这让我完全陷入困境......我想要做的是从特定元素发生后的点返回列表.
No instance for (Eq Inst) arising from a use of `elemIndex'
Possible fix: add an instance declaration for (Eq Inst)
In the expression: (elemIndex …
Run Code Online (Sandbox Code Playgroud)