错误 C2026:字符串太大,尾随字符被截断
Posted
技术标签:
【中文标题】错误 C2026:字符串太大,尾随字符被截断【英文标题】:Error C2026: string too big, trailing characters truntraced 【发布时间】:2015-07-10 01:56:50 【问题描述】:我有一个大问题,我不知道如何解决它......
我想解码一个非常长的 Base64 编码字符串(980.000 个字符),但每次调试时都会出现此错误:
我试过了,但我只能通过这个方法比较 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());
有人知道我怎样才能让它工作吗?
【问题讨论】:
你的代码 sn-p 有 C++ 的味道。那么你是故意使用C标签的吗? 【参考方案1】:正如 here 所记录的,在使用 MSVC 时,字符串文字中只能包含大约 2048 个字符。通过连接最多可以得到 65535 个字符,但是由于这仍然太短,所以这里不能使用字符串文字。
一种解决方案是将文件中的字符串读取到分配的char
缓冲区中。我不知道 gcc 和 clang 的任何此类限制,因此尝试使用它们而不是 MSVC 也可以解决这个问题。
【讨论】:
【参考方案2】:您可以先将字符串转换为十六进制,然后可以像这样包含它,
char data[] = 0xde,0xad,0xbe,0xef; //example
并且可以像字符串一样使用它,如果需要,附加空终止符。
【讨论】:
以上是关于错误 C2026:字符串太大,尾随字符被截断的主要内容,如果未能解决你的问题,请参考以下文章