2015-04-30 4 views
1

У меня есть большая проблема, и я не знаю, как это исправить ...Ошибка C2026: строка слишком большие, завершающие символы truntraced

Я хочу, чтобы декодировать очень длинные строки в кодировке Base64 (980.000 символов), но каждый раз, когда когда я отладки это я получаю эту ошибку:

Ошибка C2026: Повсеместно этот метод струнные слишком большие, завершающие символы truntraced

Я попытался это, но я могу сравнить только 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()); 
} 

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

+0

Ваш фрагмент кода пахнет C++ ish. Так вы использовали тэг C по намерению? – alk

ответ

2

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

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

1

Вы можете сначала преобразовать строку в HEX, а затем может включить его, как это,

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

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

Смежные вопросы