1.string类型读入带空格字符串使用getline函数,当然,无法读入换行符,而题目中说明输入的一段文字包含换行符,因此需要用while循环来不断地读入字符串
2.唯一的难点在于双引号的转换,在给定的文字中,双引号有可能是中文字符,这点需要注意
#include<iostream>
#include<string>
using namespace std;
int main() {
string a;
while(getline(cin,a)) {
int num=0;
for(int i=0; i<a.size(); i++) {
string t="";
t=t+a[i]+a[i+1];
if(t=="”"||t=="“")num++;
if(a[i]=='"') {
num++;
if(num%2==0) {
cout<<"”";
} else {
cout<<"“";
}
} else if(a[i]==',') {
cout<<",";
} else if(a[i]=='.') {
cout<<"。";
} else if(a[i]=='!') {
cout<<"!";
} else if(a[i]=='?') {
cout<<"?";
} else if(a[i]=='<'&&a[i+1]=='<') {
cout<<"《";
i++;
} else if(a[i]=='>'&&a[i+1]=='>') {
cout<<"》";
i++;
} else cout<<a[i];
}
cout<<endl;
}
return 0;
}