鬼题不难坑还多,浪费我好多时间,气死了
为什么以char形式单独打印这些表情字符会打印出乱码,本来算法一点没错,我先打印单个字符测试一下,竟然输出乱码,害我调试了好久,结果啥错都没有。
感觉应该是表情字符不在ASCII码的范围中导致单个字符乱码,讨厌死了,哼╭(╯^╰)╮
# include <iostream>
# include <vector>
using namespace std;
vector<string> Symbol[3];
int main(){
for(int i = 0;i<3;++i){
string S;
getline(cin, S);
for(int j = 0;j<S.size();++j){
// 遇到左括号就说明遇到表情了,一直遍历到右括号
if(S[j] == '['){
++j;
Symbol[i].push_back(string()); // 先push进一个string对象,这个对象代表一种表情的部位
// 遍历一个括号[],结束的时候j指向右括号]
while(S[j] != ']'){
Symbol[i].back() += S[j];
++j;
}
}
}
}
int N;
cin >> N;
for(int k = 0;k<N;++k){
int a, b, c ,d, e;
cin >> a >> b >> c >> d >> e;
if(a <= Symbol[0].size() && // 表示的是从一开始的序号而不是索引,所以要加等号
b <= Symbol[1].size() &&
c <= Symbol[2].size() &&
d <= Symbol[1].size() &&
e <= Symbol[0].size() &&
a >= 1 && // 考虑下限
b >= 1 &&
c >= 1 &&
d >= 1 &&
e >= 1
)
cout << Symbol[0][a-1] << "(" << Symbol[1][b-1] << Symbol[2][c-1] << Symbol[1][d-1] << ")" << Symbol[0][e-1] << endl;
else
cout << "Are you kidding me? @\\/@" << endl; // 注意输出\要写成\\转移哦
}
return 0;
}