2016-08-26 70 views
-3

我有一個是在不同的串的長度循環的開關的情況下: 含義開關情況下的循環的兩個串具有相同的長度

switch(x.GetLength()) 
{ 
case 0 // means string length is 0 
... and so on 


} 

我面臨的問題是,有兩個字符串與的6相同的長度,因此,我將有2例相同數量的

殼體6

殼體6

在第一種情況下的串omes始終爲數字形式,不包含任何字母/字符

第二種情況下的字符串始終在字符串的開始處帶有字符P.

我想這兩種情況之間deffrentiate:我試圖將切換 (x.GetLength(),X.GetAt(0))

,但它給出了一個錯誤的情況下表現不恆 否則我不能有兩例相同數量的

switch(m_strScanned.GetLength(), X.GetAt(0)) // switch over String Length 
{ 
case (6,2): // This case where the 6 digits are all numbers 

WTN: if (m_strScanned.Mid(2,1).FindOneOf(".,/*-+ABCDEFGHIJKLMNOPQRSTUVWXYZ")>=0) goto Y; 
if(m_strScanned.Mid(3,1).FindOneOf(".")>=0) goto X; 
else 
{ 
.... 
break; 
} 
case (6,'P'): 
goto TYPE; // this is where the first digit is P 

TYPE: if(m_strScanned.Mid(2,1).FindOneOf("ABCDEFGHIJKLMNOPQRSTUVWXYZ")>=0) 
goto Y; 
if(m_strScanned.Mid(3,1).FindOneOf(".")>=0) goto X; 

else 
{ 
.... 
break; 
} 

有沒有避免解決方案,如果其他條件

感謝您的幫助

+0

爲什麼不讓你的掃描器返回枚舉值而不是字符串? –

+0

'案例(6,2)'不應該*編譯*(見我的答案)。可以? – Bathsheba

回答

1

只有switch聲明和case標籤沒有解決方案,您必須有一個單一的case,然後使用例如。 if裏面選擇正確的代碼:

switch (m_strScanned.GetLength()) 
{ 
    ... 

case 6: 
    if (m_strScanned[0] == 'P') 
    { 
     // Handle this special case 
    } 
    else 
    { 
     // Handle this other special case 
    } 
    break; 

    ... 
} 
+0

而不是P我想說,如果第一個字符是從A到Z的字母之一,但函數.FindOneOf(「ABC ... Z」)在這種情況下不起作用 –

+0

@HeshamMahmoud如何使用['的std :: isupper'](http://en.cppreference.com/w/cpp/string/byte/isupper)? –

0
case 6: 
    if('P'==x[0]) { 
    // do something 
    } 
    else { 
    // do something else 
    } 
    break; 

這有什麼錯呢?

+0

沒有錯,但它代替了P我想說,如果第一個字符是從A到Z的字母之一,但函數。FindOneOf(「ABC ... Z」)在這種情況下不起作用 –

+0

你的意思是像'if(x [0]> ='A'&& x [0] <='Z'){//做一些事情 }' –

+0

正好,而不是x [0],整個字符串X –

1

嗡嗡聲。我很驚訝這個編譯。大小寫標籤需要是可編譯時間可評估的常量表達式,但常量表達式不能包含逗號運算符!

認爲你(因此不規範的標準)編譯器會把case (6,2)case 2switch(m_strScanned.GetLength(), X.GetAt(0))switch (X.GetAt(0))由於如何逗號操作作品。甚至有可能(儘管我認爲不太可能),你可能有一個編譯器擴展,將case (6, 2):視爲case 6: case 2:等等。但是,如果你利用它,那麼你就放棄了可移植性。

沒有什麼內case 6從使用if塊阻止你進一步descimination的,或跌落switch完全贊成if塊。

相關問題