Проверка на четность строки типа wchar_t

76
21 ноября 2021, 20:20

Нужно проверить на четность строку типа 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];
    }
Answer 1

Если Message_Len не является константным выражением, то во время выполнения обьект Len может принимать разные значения, так как вы инициализровали: const int Len = Message_Len+1;, т.е. значение зависит от значения другого. А создавать массив, чей размер не является константным выражением, в C++ невозможно. Другое дело, если константный обьект инициализировать константным выражением, например:

const int Len = 10; //или любым другим константным выражением

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

P.S. Если Message_Len является размером массива некоторого строкового массива Message, имеющий конкретный размер, то вы в любой момент можете инициализировать любой элемент символом конца строки '\0', тогда размер строки изменится. Константным выражением будет лишь размер занимаемой памяти, т.е. sizeof(Message), но никак не размер строки strlen(Message). То же самое касается любым другим типам.

READ ALSO
Рекурсивный конструктор

Рекурсивный конструктор

класс TreeNode наследуется от CalcTree, в классе CalcTree создается указатель на TreeNode => вызывается конструктор TreeNode, который рекурсивно вызывает конструктор...

158
Как получить данные о пикселе файла (.bmp) с помощью GetPixel ()?

Как получить данные о пикселе файла (.bmp) с помощью GetPixel ()?

Как с помощью функции GetPixel получить данные о пикселе файла изображения? Или как сделать хендл не к окну консоли, а к файлу?

86
Что означает int a : 1?

Что означает int a : 1?

Конкретно-> int a :1;

94
Программа обработки файла типа запись,c++

Программа обработки файла типа запись,c++

Пожалуйста, помогите новичку понять в чем могут быть ошибкиДолго не могу разобраться

92