Нужно проверить на четность строку типа wchar_t и добавить в конце символ если она не четная. Но при работе выдает, что размерность буферного массива должна быть константой, задаю ее как константу, но все равно вылезает та же ошибка. Пример кода:
if (Message_Len % 2 != 0 )
{
const int Len = Message_Len+1;
wchar_t Buff[Len];
for(int k = 0;k < Len;k++)
Buff[k] = Message_Text[k];
Buff[Len] = Buff[Message_Len];
Buff[Message_Len] = '_';
for (int k = 0; k < Len; k++)
Message_Text[k]= Buff[k];
}
Если Message_Len не является константным выражением, то во время выполнения обьект Len может принимать разные значения, так как вы инициализровали: const int Len = Message_Len+1;, т.е. значение зависит от значения другого. А создавать массив, чей размер не является константным выражением, в C++ невозможно. Другое дело, если константный обьект инициализировать константным выражением, например:
const int Len = 10; //или любым другим константным выражением
Иначе нужно создать динамический массив или пользоваться услугами какого то контейнера(стандартного или самописного).
P.S.
Если Message_Len является размером массива некоторого строкового массива Message, имеющий конкретный размер, то вы в любой момент можете инициализировать любой элемент символом конца строки '\0', тогда размер строки изменится. Константным выражением будет лишь размер занимаемой памяти, т.е. sizeof(Message), но никак не размер строки strlen(Message). То же самое касается любым другим типам.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости