http://118.190.20.162/view.page?gpid=T55
按题意写呗,把区和行的转换分开
#include<iostream>
#include<string>
using namespace std;
string AA(string str)
{
string x;
int f = 0;
int le = str.size();
for (int i = 0; i < le; ) {
if (str[i] == '_') {
if (f) { x+="</em>"; f = 0; }
else { x+="<em>"; f = 1; }
++i; continue;
}
if (str[i] == '[') {
int j = i ;
while (str[j++] != ']');
j--;
int k = j + 1;
while (str[k++] != ')');
k--;
x += "<a href=\""+AA(string(str,j+2,k-j-2))
+"\">"+AA(string(str, i + 1, j - i-1))+"</a>";
i = k + 1; continue;
}
x += str[i++];
}
return x;
}
int main()
{
cin.clear();
string s[200];
int len = 0;
int flag = 0;
while (getline(cin, s[len++]));
for (int i = 0; i <= len; )
{
if (s[i][0] == '#') {
int j = 0;
while (s[i][++j] == '#');
int k = j - 1;
while (s[i][++k] == ' ');
cout << "<h" << j << ">" << AA(string(s[i], k, 100)) << "</h" << j << ">" << endl;
++i; continue;
}
if (s[i][0] == '*') {
int j = 0;
if (flag != 2) cout << "<ul>" << endl;
flag = 2;
while (s[i][++j] == ' ');
cout << "<li>" << AA(string(s[i], j, 100)) << "</li>" << endl;
++i; continue;
}
if (s[i] == "") {
if (flag == 2) cout << "</ul>" << endl;
flag = 0;
++i; continue;
}
if (flag == 0) cout << "<p>";
flag = 1;
cout << AA(s[i]);
if (s[++i] == "") { cout << "</p>" << endl; }
else cout << endl;
}
return 0;
}