Определение wstring после вызова / объединения LPCWSTR

Я пытался определить wstring в заявлении дела. И попытка получить доступ к переменной из оператора case вернется из области видимости.

Поэтому я сейчас пытаюсь объявить wstring вне switch() и определить его внутри switch(). Но я не знаю, как отделить эти события.

    wstring w1;

    switch (suit)
        {
        case 0:
            std::w1(stringOne);
            break;
        case 1:
            std::w1(stringTwo);
            break;
        case 2:
            std::w1(stringThr);
            break;
        case 3:
            std::w1(stringFou);
            break;
        }

В конечном итоге я пытаюсь объединить (... и прослушать...) три LPCWSTR, и я использую std::wstring сделать это. Я открыт для использования других средств для выполнения этой задачи.

1 ответ

Решение

Переход к регистру не позволяет пропускать вызовы конструктора / деструктора. Создание wstring вне и перед переключателем должно быть в порядке. Вы делаете это, написав:

std::wstring wstr;

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

case 0:
{
   std::wstring w;
   // do whatever you want to do with string w...
   // ..
   // then let it 'hit' it's destructor 
}
break;
Другие вопросы по тегам