测试点2要注意第一个字符串为空的情况,因为题目中只说了保证第2行输入的文子串非空。
所以要使用getline来进行整行字符的输入!!!!!
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a,b;//a表示坏掉的键,b表示应该输入的文字
getline(cin,a);//使用getline不能使用cin
getline(cin,b);
string result = "";
for (int i=0; i<b.length(); i++)
{
if (b[i]>='a' && b[i]<='z')//小写字母转变为大写字母再查询
{
if (a.find(b[i]-32) == string::npos)
{
result += b[i];
}
}
else
{
if (a.find(b[i]) == string::npos)
{
result += b[i];
}
}
}
if (a.find("+") != string::npos)//不输出大写字母
{
for (int i=0; i<result.length(); i++)
{
if (result[i]>='A' && result[i]<='Z')
continue;
else
{
cout << result[i];
}
}
}
else
{
cout << result;
}
return 0;
}
笔记
- cin 和 getline 混用时出现的问题 cin>>和getline混用需谨慎_至浊至愚-CSDN博客_cin和getline混用