当前位置: 代码迷 >> 综合 >> 201703-3 Markdown【70分】
  详细解决方案

201703-3 Markdown【70分】

热度:62   发布时间:2024-02-06 02:37:46.0

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;
}