如何在解析文本C ++时删除注释

时间:2015-11-19 16:40:56

标签: c++ ifstream text-parsing ppm

我正在尝试使用.ppm文件中的“ifstream”解析C ++中的文本,但我想避免在文件中以“#”开头的注释,并在行尾完成。我可以跟踪以下代码的评论字符...任何人都可以帮助解决其余的字,直到字符'\ n'?

string word;            
file>>word;
if(strcmp(word, "#")){
   //TO DO...Dismiss all characters till the end of the line
}

2 个答案:

答案 0 :(得分:2)

使用std::getline()& continue while line[0] == '#'循环std::ifstream file( "foo.txt" ); std::string line; while( std::getline( file, line ) ) { if( line.empty() ) continue; if( '#' == line[0] ) continue; std::istringstream liness( line ); // pull words out of liness... }

#

或者如果std::ifstream file( "foo.txt" ); std::string line; while( std::getline( file, line ) ) { std::istringstream liness( line.substr( 0, line.find_first_of( '#' ) ) ); // pull words out of liness... } 可能出现在中线,您可以忽略其后的所有内容:

{{1}}

答案 1 :(得分:0)

根据要删除的注释的复杂程度,您可以考虑使用正则表达式:

Removing hash comments that are not inside quotes

例如,哪些会被视为评论:

# Start of line comment
Stuff here # mid-line comment
Contact "Tel# 911"

您想在#之后删除上述所有三个示例吗?

或者,如果该行的第一个字符为#,您是否仅将其视为评论?