帮同学完成的一个实验作业:将XML的标题和内容分离。
//栈
#include<iostream>
#include<stack>
using namespace std;
int main(){
string str;
stack<char>tag,contents,xml;
int i,j,k,t;
getline(cin,str);//输入字符串str
for(i=0; i<str.length(); i++)
{
if(str[i]!='/')
{
xml.push(str[i]);
}
else if(str[i]=='/')
{
while(xml.size()!=0)
{
if(xml.top()!='>')
{
contents.push(xml.top());
xml.pop();
}
else if(xml.top()=='>')
{
cout<<"Contents is:";
while(contents.size()!=1)
{
cout<<contents.top();
contents.pop();
}
contents.pop();
cout<<endl;
break;
}
}
tag.push('>');
while(xml.size()!=0)
{
if(xml.top()!='<')
{
tag.push(xml.top());
xml.pop();
}
else if(xml.top()=='<')
{
cout<<"Tag is:<";
while(tag.size()!=1)
{
cout<<tag.top();
tag.pop();
}
tag.pop();
cout<<endl;
break;
}
}
}
}
}
输入
<TITLE>Empire Burlesque</TITLE><ARTIST>Bob Dylan</ARTIST><COUNTRY>USA</COUNTRY>
输出
Tag is:<TITLE>
Contents is:Empire Burlesque
Tag is:<ARTIST>
Contents is:Bob Dylan
Tag is:<COUNTRY>
Contents is:USA