ark*_*ark 4 c++ file file-handling
如何从文件中读取直到达到特定字符,然后寻找下一个字符并继续用c ++读取.
在我的程序中我使用一些HTML语法并生成一个htm文件...所以在我的c ++代码中我添加了标签...但是当我从我的htm文件中读取时,我希望它不包含标签.
我打算做的是读取文件,直到遇到'<'然后只是寻找直到遇到'>'并从那里继续阅读.
请帮帮我,指导我..我对c ++中的文件输入输出不是很有经验..谢谢.. :)
通常,要读取文件直到到达特定字符,可以使用std::getline第二个参数设置为终止符,这样,如果要读取直到直到'<'字符,就可以
std::getline( infile, str, '<' );
Run Code Online (Sandbox Code Playgroud)
然后,您可以对>角色进行相同操作
就您而言,如果您要解析HTML,则可能已经有特定的解析器了。我认为HTML1.1是XML兼容的,但HTML1.0不是,因为并非总是必须关闭所有标签,因此XML解析器不一定有效。
您将需要假设打开和关闭标签不是注释或带引号的文本的一部分,并且上述方法不会向您保证,因此您需要一个完整的状态机。
首先,您应该意识到正确地执行此操作比您显然想的要复杂得多.
只要按照你的要求回答这个问题,就可以istream::get一次读取一个字符,直到你得到一个'<'.您可以使用ignore忽略流中下一个">"的字符.
然而,回到第一点通常无法正常工作.特别是,标签完全可以包含一个字符串,而字符串(依次)包含一个不是标签结尾的">" .因此,为了正确解析HTML,您需要解析标记内的字符串,当您找到它们时,跳过它们的内容而不是将它们可能包含的任何">"视为标记的结尾.