增加字符串文字长度限制

时间:2017-07-24 08:30:45

标签: c++ string gcc visual-c++ compilation

我有很多大于65535字节的字符串文字。我不允许将这些字符串保存到单独的文件中,如何解决字符串限制?

  

https://stackoverflow.com/a/11488682/7821462

     
      
  • MSVC:2048

  •   
  • GCC:无限制(最多100,000个字符),但在510个字符后发出警告:

    String literal of length 100000 exceeds maximum length 509 that
    C90 compilers are required to support
    
  •   

4 个答案:

答案 0 :(得分:1)

您可以将文本字符串拆分为多个字符串。以下代码适用于Visual Studio 2017:

const char* p1 = "1234567890...";  // Very long (length > 65000)
const char* p2 = "abcdefghij...";  // Very long (length > 65000)
string s = p1;
s += p2;
cout << s.size() << endl;

您必须将文本字符串写成多行,如:

const char* p = "This is a "
    "very long string...";

实际上Visual C ++中的最大限制是65535.以下是编译器错误消息:

致命错误C1091:编译器限制:字符串长度超过65535字节

答案 1 :(得分:1)

这些大字符串看起来更像是资源而不是代码,我会使用windows二进制文件的资源部分(FindResource / LoadResource)和SO: embedding resources into linux executable的答案来将相同的数据插入到linux中。

答案 2 :(得分:0)

尝试使用数组。

https://msdn.microsoft.com/en-us/library/81k8cwsz.aspx

  

数组的最大大小由size_t定义。在头文件STDDEF.H中定义,size_t是一个无符号的int,范围为0x00000000到0x7CFFFFFF。

答案 3 :(得分:-3)

Microsoft documentation表示使用连接(即写"a" "b" "c"而不是"abc")允许您将限制增加到大约64 KiB字节。但这对您的用例来说还不够。

如果没有,您可以单独保存字符串,使用xxd -ixxd comes with [vim](http://www.vim.org/)), and #include`将其转换为字节数组初始值设定项(但您必须添加空终止符)手动地)。

相关问题