错误 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:字符串太大,尾随字符被截断的主要内容,如果未能解决你的问题,请参考以下文章

尝试插入时,错误、字符串或二进制数据将被截断

如何在 C# 中转换为字节时截断字符串?

(SqlServe)关于字符串长度被截断的问题

SQLException : 字符串或二进制数据将被截断

SQL Server 字符串或二进制数据将被截断

Android HttpUrlConnection 结果字符串被截断