Ошибка C2026: слишком большая строка, конечные символы передаются

У меня большая проблема, и я не знаю, как ее исправить …

Я хочу декодировать очень длинную строку в кодировке 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());
}

Кто-нибудь знает, как я могу заставить его работать?

1

Решение

Как задокументировано Вот, вы можете иметь только около 2048 символов в строковом литерале при использовании MSVC. Вы можете получить до 65535 символов путем конкатенации, но поскольку это все еще слишком мало, вы не можете использовать строковые литералы здесь.

Одним из решений было бы чтение строки из файла в некоторый выделенный char буфер. Я не знаю каких-либо таких ограничений для gcc и clang, поэтому попытка использовать их вместо MSVC также может решить эту проблему.

3

Другие решения

Вы можете сначала преобразовать свою строку в шестнадцатеричный формат, а затем включить его следующим образом:

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

И чем можно использовать его как строку, добавьте нулевой терминатор, если необходимо.

1

По вопросам рекламы [email protected]