example - hello world c++ visual studio 2017
Aumentar el lĂmite de longitud literal de cadena (4)
Tengo muchos literales de cadena que son más grandes que 65535 bytes. No puedo guardar estas cadenas para separar archivos, ¿cómo puedo solucionar el problema con el límite de cadena?
https://stackoverflow.com/a/11488682/7821462
MSVC: 2048
GCC: sin límite (hasta 100.000 caracteres), pero da advertencia después de 510 caracteres:
String literal of length 100000 exceeds maximum length 509 that C90 compilers are required to support
Estas cadenas grandes parecen más recursos que código, y usaría la sección de recursos de un binario de Windows (FindResource / LoadResource) y la respuesta al SO: incrustando recursos en el ejecutable de Linux para insertar los mismos datos en Linux.
Intenta usar una matriz.
https://msdn.microsoft.com/en-us/library/81k8cwsz.aspx
El tamaño máximo para una matriz está definido por size_t. Definido en el archivo de encabezado STDDEF.H, size_t es unsigned int con el rango 0x00000000 a 0x7CFFFFFF.
La documentación de Microsoft dice que usar la concatenación (es decir, escribir "a" "b" "c"
lugar de "abc"
) le permite aumentar el límite a alrededor de 64 bytes KiB. Pero esto no es suficiente para su caso de uso.
De lo contrario, quizás pueda guardar la cadena por separado, convertirla en un inicializador de matriz de bytes usando xxd -i
( xxd comes with [vim](http://www.vim.org/)), and
# include` eso (pero tendrás que agregar el terminador nulo manualmente).
Puede dividir la cadena de texto en varias cadenas. El siguiente código funcionó en 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;
Tienes que escribir la cadena de texto en varias líneas como:
const char* p = "This is a "
"very long string...";
En realidad, el límite máximo en Visual C ++ es 65535. Aquí está el mensaje de error del compilador:
error fatal C1091: límite del compilador: la cadena supera 65535 bytes de longitud