2012-08-11 89 views
1

我輸入了一個字符串類型的句子。如何在字符串中搜索C++

std::string message; 
std::getline(std::cin, message); 

進入了一句後,我使用if語句字符串爲「莫爾斯電碼」轉換:

int length = message.length(); 
for(int i = 0; i < length;i++) //to loop in the message 
{ 
    if(message[i] == 'A') 
     cout << "-.";//and the rest for 'b','c','d'....'z' 
} 

如何參加輸入的字符串的莫爾斯電碼和解碼。例如: 如果莫爾斯電碼中的「.-」顯示'A',並且信息顯示'B'中顯示「-...」。

+0

正則表達式將是最聰明的方式.. – cybertextron 2012-08-11 18:29:28

+0

你將不得不手動遍歷字符串,搜索子字符串可能匹配一些它屬於一個不同的字母 – Gir 2012-08-11 18:32:33

+0

莫爾斯的「字符」之間有空格串?我認爲沒有任何 – Gir 2012-08-11 18:38:59

回答

8

以這種方式使用二叉樹 - 根是空的(NULL)。 每個孩子都有一個字符「 - 」。 。 這樣你就可以將洞莫爾斯碼解碼到樹中。 現在,而不是放在最後的NULL,把你應該得到的字符結尾。 樹看起來應該是:

 
           root 
          / \ 
           '-' '.' 
           \ 
           '.' 
            \ 
            'A' 

等 現在你能找到爲O字符(LG N)樹當n =大小。

+0

也可以用LUT來完成,但是必須將字符串轉換爲位串,' - '= 1和。='0' – Gir 2012-08-11 18:43:29

+1

對於圖中的4個面。 – iKlsR 2012-08-11 19:18:32