您好我有由空格例如*** --- ***
分開SOS串的摩爾斯電碼讀取每個莫爾斯電碼。從字符串線
誰能幫我看每個莫爾斯電碼?
對於我讀每一個地方我需要閱讀每個莫爾斯電碼,這樣我可以通過莫爾斯電碼作爲一個變量,它返回字母字符其他方法字符的時刻。
您好我有由空格例如*** --- ***
分開SOS串的摩爾斯電碼讀取每個莫爾斯電碼。從字符串線
誰能幫我看每個莫爾斯電碼?
對於我讀每一個地方我需要閱讀每個莫爾斯電碼,這樣我可以通過莫爾斯電碼作爲一個變量,它返回字母字符其他方法字符的時刻。
您可以在莫爾斯電碼和它們的等效值存儲在地圖上, 各執空間莫爾斯串,遍歷這些元素和從地圖爲你的最終結果
檢索結果值(和它們串聯在一起)這是表示該解碼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++已經有好幾年了。希望它能引發你一些更好的想法。
感謝您的快速回復,但我已經包含莫爾斯和相關的英文字母樹,如果我有莫爾斯和大寫字母的字符串,因爲我的程序只編碼小寫字母。例如我有*** --- *** D *這樣的東西,所以我的輸出應該顯示:sos德所以我如何可以讀取每個莫爾斯碼並轉換爲英語。 –
您可以使用strtok來標記字符串,並使用空格字符作爲分隔符。
沒有嘗試顯示。 –
這是功課嗎?如果是,請添加標籤,並檢查[this](http://www.cplusplus.com/forum/general/32210/)。 – demorge
**你嘗試過什麼?它爲什麼會失敗? – Pierre