2012-05-27 59 views
-6

您好我有由空格例如*** --- ***分開SOS串的摩爾斯電碼讀取每個莫爾斯電碼。從字符串線

誰能幫我看每個莫爾斯電碼?

對於我讀每一個地方我需要閱讀每個莫爾斯電碼,這樣我可以通過莫爾斯電碼作爲一個變量,它返回字母字符其他方法字符的時刻。

+2

沒有嘗試顯示。 –

+0

這是功課嗎?如果是,請添加標籤,並檢查[this](http://www.cplusplus.com/forum/general/32210/)。 – demorge

+0

**你嘗試過什麼?它爲什麼會失敗? – Pierre

回答

0

您可以在莫爾斯電碼和它們的等效值存儲在地圖上, 各執空間莫爾斯串,遍歷這些元素和從地圖爲你的最終結果

檢索結果值(和它們串聯在一起)

這是表示該解碼SOS的例子「... ... ---」

#include <string> 
#include <cstring> 
#include <iostream> 
#include <map> 
#include <vector> 


using namespace std; 

vector<string> SplitString (string aString); 
vector<string> SplitString (string aString){ 
    vector<string> vec; 
    char * cstr, *p; 
    string str = aString; 

    cstr = new char [str.size()+1]; 
    strcpy (cstr, str.c_str()); 
    p=strtok (cstr," "); 

    while (p!=NULL){ 
    vec.push_back(p); 
    p = strtok(NULL," "); 
    } 

    delete[] cstr; 
    return vec; 
} 

int main(){ 

    map<string,string> m; 
    m["..."] = "S"; 
    m["---"] = "0"; 


    vector<string> v; 
    string sentence = "... --- ..."; 
    v = SplitString(sentence); 


    vector<string>::iterator it; 

    cout << "Our morse (" << sentence << ") decoded to: "; 
    for (it = v.begin() ; it < v.end(); it++){ 
    cout << m[*it]; 
    } 

    cout << endl; 

    return 0; 
} 

你可以在其他莫爾斯電碼填寫,將已經採取了我太多的時間,對不起,使用SOS因爲它是如此衆所周知。 :) 這個例子也可能不是很好,也沒有優化也沒有推薦,距離我接近C++已經有好幾年了。希望它能引發你一些更好的想法。

+0

感謝您的快速回復,但我已經包含莫爾斯和相關的英文字母樹,如果我有莫爾斯和大寫字母的字符串,因爲我的程序只編碼小寫字母。例如我有*** --- *** D *這樣的東西,所以我的輸出應該顯示:sos德所以我如何可以讀取每個莫爾斯碼並轉換爲英語。 –

0

您可以使用strtok來標記字符串,並使用空格字符作爲分隔符。