错误 C2026:字符串太大,尾随字符被删减

Error C2026: string too big, trailing characters truntraced

本文关键字:字符 C2026 字符串 错误      更新时间:2023-10-16

我有一个大问题,我不知道如何解决它...

我想解码一个很长的 Base64 编码字符串(980.000 个字符),但每次调试它时都会收到此错误:

错误 C2026:字符串太大,尾随字符被缩短

我试过这个,但我只能通过此方法比较 2 个字符串

char* toHash1 = "LONG BASE 64 Code";
char* toHash2 = "LONG BASE 64 Code";
if (true) {
  sprintf_s(output, outputSize, "%s", base64_decode(toHash1 =+ toHash2).c_str());
}

有人知道我怎样才能让它工作吗?

如此处所述,使用 MSVC 时,字符串文本中只能包含大约 2048 个字符。通过串联最多可以获得 65535 个字符,但由于这仍然太短,因此不能在此处使用字符串文字。

一种解决方案是将字符串从文件中读取到某个分配的char缓冲区中。我不知道 gcc 和 clang 有任何这样的限制,所以尝试使用它们而不是 MSVC 也可以解决这个问题。

您可以先将字符串转换为十六进制,然后可以像这样包含它,

char data[] = {0xde,0xad,0xbe,0xef};  //example

并且可以像字符串一样使用它,如果需要,请附加 null 终止符。