gpt4 book ai didi

C++ std::sort 函数没有完成?

转载 作者:行者123 更新时间:2023-11-27 23:46:40 26 4
gpt4 key购买 nike

我目前正在为游戏设置高分部分,但由于 std::sort 函数的奇怪行为,我遇到了一个非常奇怪的问题。

我在 C++ 中的 RAD Studio 10.2 (Embarcadero IDE) 中完成所有工作。

所以他就是我的代码:

std::string Line;
int count = 0;
int i = 0;
ifstream File("Highscore.txt");
if(File.is_open())
{
while(getline(File, Line))
{
count += 1;

}

File.close();

}

ifstream ReadFile("Highscore.txt");
if(ReadFile.is_open())
{
string *scores = NULL;
scores = new string[count];

while(getline(ReadFile, Line))
{
scores[i] = Line;
i += 1;
}

ReadFile.close();


std::sort(scores, (scores+count));

UnicodeString Uscores1 = scores[0].c_str();
UnicodeString Uscores2 = scores[1].c_str();
UnicodeString Uscores3 = scores[2].c_str();
UnicodeString Uscores4 = scores[3].c_str();
UnicodeString Uscores5 = scores[4].c_str();
LScore1->Caption = Uscores1;
LScore2->Caption = Uscores2;
LScore3->Caption = Uscores3;
LScore4->Caption = Uscores4;
LScore5->Caption = Uscores5;

}

我没有收到编译器/链接器的任何错误,一切正常。字符串数组被正确填充等等。

但它不是排序。

为了向您展示问题,我制作了一个屏幕截图 - 在左侧您可以看到带有分数的 txt 文件;右边可以看到排序算法后的输出:

enter image description here

我现在的问题是为什么会这样?

谢谢你的帮助

最佳答案

欢迎使用 C++。由于您想按排名列出数字,因此请将它们读作 int 而不是 string。忘记运算符 new。你将不需要它很多年,如果有的话。使用标准容器,如 std::vector,它透明地处理内存分配和取消分配。

#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
int main() {
using namespace std;
vector<int> scores;
{
ifstream inp("Highscore.txt");
int next;
while (inp >> next) {
scores.push_back(next);
}
}
sort(scores.begin(), scores.end());
for (auto s : scores) {
cout << s << '\n';
}
return 0;
}

关于C++ std::sort 函数没有完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49982613/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com