错误C2026:字符串太大,尾随字符被激活

时间:2015-04-30 11:26:01

标签: c++ string base64 helper trailing

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

我想解码一个很长的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());
}

任何人都知道如何让它发挥作用?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

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

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