70分,待填坑
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
string inner(string s){
string left,right,result=s;
int number_=0;
while(result.find('_')!=string::npos){ //有强调符号
number_++;
left=string(result,0,result.find('_'));
right=string(result,result.find('_')+1);
result=left;
if(number_%2==1){
result+="<em>";
}
else{
result+="</em>";
}
result+=right;
}
while(result.find('[')!=string::npos){ //有链接
int t1=result.find('[');
int t2=result.find(']');
int l1=result.find('(');
int l2=result.find(')');
string left=string(result,0,t1);
string right=string(result,l2+1);
string text=string(result,t1+1,t2-t1-1);
string link=string(result,l1+1,l2-l1-1);
result=left;
result+="<a href=\"";
result+=link;
result+="\">";
result+=text;
result+="</a>";
result+=right;
// cout<<result<<endl;
}
return result;
}
int main(){
string line;
int listlevel=0;
ifstream cin( "D:\\TYUT\\Dev 代码\\CCF\\新建文本文档.txt" );
while(getline(cin,line)){
if(line[0]!='*' && listlevel!=0){ //输出列表的结束符
cout<<"</ul>"<<endl;
listlevel=0;
}
if(line.length()==0) ;
else if(line[0]=='#'){ //标题
int level=0;
while(line[0]=='#'){
line=string(line,1);
if(level<=5){ //最深只有6层
level++;
}
}
while(line[0]==' '){ //去掉#与后边之间多余的空格
line=string(line,1);
}
// cout<<line<<" "<<level<<endl;
line=inner(line);
cout<<"<h"<<level<<">"<<line<<"</h"<<level<<">"<<endl;
}
else if(line[0]=='*'){ //列表
if(listlevel==0){
cout<<"<ul>"<<endl;
}
listlevel++;
line=string(line,1);
while(line[0]==' '){ //去掉#与后边之间多余的空格
line=string(line,1);
}
line=inner(line);
cout<<"<li>"<<line<<"</li>"<<endl;
}
else{ //段落
cout<<"<p>";
line=inner(line);
cout<<line;
while(getline(cin,line) && line.length()!=0){ //怎么判断这一行是不是空行?长度为0就是空行啊
cout<<endl;
line=inner(line);
cout<<line;
}
cout<<"</p>"<<endl;
}
}
return 0;
}