2017-03-03 Markdown【70分】

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值