从字符串中读取每个莫尔斯电码

Read each morse code from a string line

本文关键字:字符串 读取      更新时间:2023-10-16

嗨,我有用空格分隔的字符串莫尔斯电码,例如 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++了。希望它能激发你一些更好的想法。

您可以使用 strtok 标记字符串并使用空格字符作为分隔符。