我正在尝试使用.ppm文件中的“ifstream”解析C ++中的文本,但我想避免在文件中以“#”开头的注释,并在行尾完成。我可以跟踪以下代码的评论字符...任何人都可以帮助解决其余的字,直到字符'\ n'?
string word;
file>>word;
if(strcmp(word, "#")){
//TO DO...Dismiss all characters till the end of the line
}
答案 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"
您想在#
之后删除上述所有三个示例吗?
或者,如果该行的第一个字符为#
,您是否仅将其视为评论?