解析文本文件时忽略注释



我有一个大的文本文件,我正在使用字符串流解析。文本文件看起来像这样

#####
##bjhbv
nvf
vbhjbj
vfjbvjf
*bj
*bvjbv
.
.
.
.
+FILE
data I want to parse from here to 
.
.
.
.
-FILE 
till here
#shv again comments
.
.

如何解析+FILE到-FILE之间的关系?我可以解析它的内部,但我只是想忽略上面和下面的注释。请帮助我如何忽略白色阅读或解析从。txt文件。,

应该这样做:

{
ifstream f_in(input_file_name);
ofstream f_out(output_file_name);
string line;
// discard up to "+FILE"
while (getline(f_in, line) && line != "+FILE");
// copy up to "-FILE"
while (getline(f_in, line) && line != "-FILE") f_out << line << endl;
}

ifstreamofstream将在离开作用域时关闭各自的文件,这就是我在{}中展示它们的原因。

正如您在注释中看到的,您可以丢弃上面的+FILE。你可以使用标志和条件方法。使用,


while(some_condition)
{
//ignore comments
if(!std::find("#")) 
{
continue;
}
bool flag=false;
if(!std::find("+FILE")) 
{
flag=true;
}
if(!std::find("-FILE"))
{
flag=false;
}
if(flag)
{
..
..
..
}
}

如果你有不同的字符串名称,你也可以使用枚举和数组索引方法。如果您不想使用std::find,如果您正在通过getline进行解析,那么您可以将std::find替换为line.at(0)

最新更新