2015-08-14 28 views
0

我試着在case語句中定義一個wstring。並且試圖從case語句中訪問該變量將返回超出範圍。調用/連接後定義wstring LPCWSTR

所以我現在試圖在switch()之外聲明一個wstring並在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

使用=在case語句內將字符串分配給w1 – marcinj

回答

2

跳轉到某個案例不允許跳過構造函數/析構函數調用。在交換機之外和之前創建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;