读书人

请问 字符读取的有关问题 50分

发布时间: 2012-03-06 20:47:55 作者: rapoo

请教 字符读取的问题 50分
ifstream In( "D:\\StrTest\\baidu.txt ");
ofstream Out( "D:\\StrTest\\Mid.txt ");

vSpaceBuf = " ";
while(!In.eof())
{
vChar = In.get();

if(vChar == ' < ')
vStreamBuf < < '\n ';

if(vChar < 0x20)
continue;
if(vChar == ' < ')
vStreamBuf < < '\n ';

vStreamBuf < < vChar;
if(vChar == '> ')
vStreamBuf < < '\n ';
}
我的程序是逐个读取字符,遇到一对 " <...> " 在其后加 "\n " ,但是我想 在遇到 (..)中的 " <...> "时不在 <..> 后加 "\n ",例如:( ' <a href= "http://passport.baidu.com/?login&tpl=mn&u= '+escape(location.href)+ ' "> 登录 </a> ') 直接把这一条读进去,而不对 " <> "处理,
我该怎么做 ??

[解决办法]
状态图。。。
前几天我刚做了类似lz的东西,我的是统计C++文件里有多少注释行。这里要用到栈。
[解决办法]
void ReadString(char *str)
{
int len = strlen(str);
int tag = 0;
for( int i = 0 ; i < len ; i++)
{
char ch = str[i];
if( ch != '( ' && ch != ') ')
{
if( ch == '> ' && tag == 0 )
{
std::cout < <ch < <endl;
}
else
std::cout < <ch;
}
else
{
if( ch == '( ' )
tag = 1;
else if( ch == ') ' )
tag = 0;
std::cout < <ch;
}
}
}
//关键是加个标记
[解决办法]
void main()
{
ifstream In( "D:\\StrTest\\baidu.txt ");
ofstream Out( "D:\\StrTest\\Mid.txt ");

int cnt = 0;

while(!In.eof())
{
char ch = In.get();

if (ch == ' ')
continue;

if (ch == '( ')
cnt++;

if (ch == ') ')
cnt--;

if (cnt != 0)
Out < <ch;
else
{
if (ch == '> ' || ch == ' < ')
Out < < '\n ';
else
Out < <ch;
}

}

}

读书人网 >C++

热点推荐