#include <bits/stdc++.h>
using namespace std ;
int main() {
int n ;
cin >> n ;
map<string, char> fin= {
{".-", 'A'}, {"-...", 'B'}, {"-.-.", 'C'}, {"-..", 'D'},
{".", 'E'}, {"..-.", 'F'}, {"--.", 'G'}, {"....", 'H'},
{"..", 'I'}, {".---", 'J'}, {"-.-", 'K'}, {".-..", 'L'},
{"--", 'M'}, {"-.", 'N'}, {"---", 'O'}, {".--.", 'P'},
{"--.-", 'Q'}, {".-.", 'R'}, {"...", 'S'}, {"-", 'T'},
{"..-", 'U'}, {"...-", 'V'}, {".--", 'W'}, {"-..-", 'X'},
{"-.--", 'Y'}, {"--..", 'Z'},
};
string ans[n+1]={0};
for(int i=0;i<n;i++)
{
string a;
getline(cin,a);
vector <char> tans;
vector <char> m ;
for(int j=0;j<a.length();j++)
{
if(a[j]==' ')
{
string s(m.begin(),m.end());
tans.push_back(fin[s]);
while (!m.empty())m.pop_back();
}
else
{
m.push_back(a[j]);
}
}
string s(tans.begin(),tans.end());
ans[i]=s;
}
for(int i=0;i<n;i++)
{
cout << ans[i] << "\n" ;
}
return 0;
}
#include
using namespace std ;
int main() {
int n ;
cin >> n ;
map fin= {
{".-", 'A'}, {"-...", 'B'}, {"-.-.", 'C'}, {"-..", 'D'},
{".", 'E'}, {"..-.", 'F'}, {"--.", 'G'}, {"....", 'H'},
{"..", 'I'}, {".---", 'J'}, {"-.-", 'K'}, {".-..", 'L'},
{"--", 'M'}, {"-.", 'N'}, {"---", 'O'}, {".--.", 'P'},
{"--.-", 'Q'}, {".-.", 'R'}, {"...", 'S'}, {"-", 'T'},
{"..-", 'U'}, {"...-", 'V'}, {".--", 'W'}, {"-..-", 'X'},
{"-.--", 'Y'}, {"--..", 'Z'},
};
string ans[n+1]={0};
for(int i=0;i {
string a;
getline(cin,a);
vector tans;
vector m ;
for(int j=0;j {
if(a[j]==' ')
{
string s(m.begin(),m.end());
tans.push_back(fin[s]);
while (!m.empty())m.pop_back();
}
else
{
m.push_back(a[j]);
}
}
string s(tans.begin(),tans.end());
ans[i]=s;
}
for(int i=0;i {
cout << ans[i] << "\n" ;
}return 0;
}
幾個錯誤的點
1.string ans[n+1]={0}; //字串陣列不能將初始值設成整數
2.getline前要cin>>ws,將上一行句尾的換行弄掉
3.除了句中遇到空白時要解譯密碼,最後還要再解譯一次
大概就這樣XDD