CCF认证 2017-03 Markdown

模拟题,文本处理,具体方法看代码注释

#include
#include
#include
#include
#include
using namespace std;
const int N=100+10;
string ans[N];
int main()
{
	string s;
	bool p=false,u=false; //辅助标记 ,u代表列表,p代表段落 
	string a="",b=""; //辅助保存字串 
	int k=0; //记录行数 
	for(int i=0;i';
			k++;
		}
		else if(s[0]=='*') //无序列表 
		{
			if(!u)
			{
				u=true;
				ans[k]+="
    ";k++; } s.erase(0,1); while(s[0]==' ') s.erase(0,1); ans[k]+="
  • ";ans[k]+=s;ans[k]+="
  • "; k++; } else //段落 { if(!p) { ans[k]+="

    "; p=true; } ans[k]+=s; k++; } } //文件结束后,要像读到空行那样处理 if(u) { ans[k]+="

"; k++; u=false; } if(p) { ans[k-1]+="

"; p=false; } //for(int i=0;i"); ans[i].insert(j,a); ans[i].insert(j,""); a=""; } if(ans[i][j]=='[') //发现链接,处理完后,j依然指向原位置,这样就可以嵌套处理强调和链接 { ans[i].erase(j,1); while(ans[i][j]!=']') a+=ans[i][j],ans[i].erase(j,1); ans[i].erase(j,2); while(ans[i][j]!=')') b+=ans[i][j],ans[i].erase(j,1); ans[i].erase(j,1); ans[i].insert(j,""); ans[i].insert(j,a); ans[i].insert(j,"\">"); ans[i].insert(j,b); ans[i].insert(j,"

你可能感兴趣的:(CCF认证历年真题)