添加了更改代码的第二个编辑详细信息
我在输入单词或句子时想要输出的字符串数组中有一个字母等效数字代码。这是我的 C++ 代码。它让用户输入和输出一个哔哔声,以等效时间为一个完整单词中的所有字母表的所有数字数字,就像莫尔斯电码一样。基本上我的嵌入式应用程序需要这个,但首先我想让它在典型的 C 中工作,然后我将它移动到嵌入式。
目前它的工作方式就像字母'i'有数字代码24,当执行时&'i'作为输入,它会先发出两次哔哔声,睡眠时间在450之间,睡眠时间为INNER_LOOP。然后它睡眠OUTER_LOOP,即700,然后在 INNER_LOOP 睡眠时间发出 4 次哔声。因此可以识别它发出 2 次哔声,等待然后发出 4 次哔声,即传输“24”,即“i”的代码。如果我输入“ii”,它会执行两次相同的操作,即在 INNER_LOOP 睡眠时间之后第二次“i”开始发出哔哔声,因此代码看起来像 2424。无法识别它是 24 和再次 24。它应该像 24 一样工作,如前所述比 looooong 等待和 24 再次 raed,因此用户可以识别两个字母的代码,即“ii”或任何其他组合。
我希望它引入在同一单词的任何两个字母之间发生的 THIRD_SLEEP 时间,以便可以单独读取每个字母代码。目前它只在相同字母的数字代码之间。
到目前为止,这是我的代码:
#include <iostream>
#include <string>
#include <sstream>
#include <windows.h>
using namespace std;
string texttopattern(char c)
{
//Hello world again
//125-15-123-123-135 1346-135-1235-123-145 1-1245-1-24-1345
string alphabet = "abcdefghijklmnopqrstuvwqyz"; //osv
string code[] = {"1","12","14","145", "15", "124", "1245",
"125", "24", "245", "13", "123", "134",
"1345", "135", "1234", "12345", "1235", "234", "2345",
"136", "1236", "1346", "13456", "1356", "12346"};
int index = alphabet.find(c);
if(index!=-1)
return code[index];
else
return " ";
}
int main()
{
const int OUTER_SLEEP = 700,
INNER_SLEEP = 450;
int n;
string ord;
getline(cin, ord);
string code="";
for(int i=0; i<ord.length(); i++)
{
code += texttopattern(ord[i]);
}
for(int i = 0; i<code.length(); i++)
{
n = code[i] - '0';
for(int j=0; j<n; j++)
{
cout<<'\a';
Sleep(INNER_SLEEP);
}
Sleep(OUTER_SLEEP);
}
return 0;
}