gpt4 book ai didi

C++ std::string 追加覆盖而不是追加

转载 作者:太空宇宙 更新时间:2023-11-04 12:29:57 24 4
gpt4 key购买 nike

我的游戏有超过 80 个关卡,只有一个关卡未通过​​加盐 sha1 哈希。原因是盐被添加到关卡文件中而不是末尾。

该问题仅在 Ubuntu 16.04 64 位中出现,在 Windows 中有效。它发生在每次发射并且每次都被插入到相同的位置。

关卡文件有两行,第一行是关卡文件,第二行是哈希值。所以我得到第一行并向其添加盐。但问题仍然与单行文件相同。

这是最小化的代码:

int main() {
std::ifstream inf("level.txt");
std::string lvl_file;
std::getline(inf, lvl_file);
inf.close();

lvl_file += "MYSECRETSALT"; // lvl_file.append(..) also has same issue
std::cout << lvl_file << std::endl;
}

这段代码打印了整个关卡文件,但 MYSECRETSALT 进入了它的内部,而不是它的末尾。如果我在追加之前打印 lvl_file,它会很好地打印而不会遗漏任何内容。

// IT SHOULD BE LIKE
...[0,26],[1,61]],"decor_2":[[0,25000]],"decor_3":[[0,25000]],"tiles_3":[[0,25000]]},"ghosts":[],"turrets":[]}MYSECRETSALT

// BUT IT PRINTS LIKE THIS
...[0,26],[1,61]],"decor_2":[[0,25000]],"decorMYSECRETSALT0]],"tiles_3":[[0,25000]]},"ghosts":[],"turrets":[]}

关卡文件在底部:https://hastebin.com/ayeduwucid.php

不过,将文件硬编码到字符串流中可以正常工作。

    std::stringstream inf;
inf << R"json(..)json";

最佳答案

该文件是用 Windows 编写的,它转到第二行 \n。当我以十六进制检查它时,它实际上放置了导致这些问题的 \r\n

关于C++ std::string 追加覆盖而不是追加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43559760/

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