我有一个大的文本文件,我正在使用字符串流解析。文本文件看起来像这样
#####
##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;
}
ifstream
和ofstream
将在离开作用域时关闭各自的文件,这就是我在{}
中展示它们的原因。
正如您在注释中看到的,您可以丢弃上面的+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)
。