В вашем коде есть две ошибки:
std::strcpy(original_str, str.c_str());
Функция strcpy
предназначена для строк C. Используйте memcpy
здесь.
return encrypted_str;
Как конструктор для std::string
, вызываемый этим оператором return
, должен знать, какова длина строки? Конструктор std::string
, который принимает char *
, предназначен только для строк в стиле C. Вызовите конструктор явно и передайте ему длину.
Если вы исправите эти две проблемы, ваши строки должны быть в состоянии правильно обрабатывать любой вид произвольного мусора, который вы хотите сохранить в них. Не используйте функции, предназначенные для строк C в стиле с произвольными данными.