gpt4 book ai didi

c++ - 读取文件头

转载 作者:行者123 更新时间:2023-11-28 05:49:38 25 4
gpt4 key购买 nike

我有一个类似于下面的文件

@
@
1 2 3
4 5 6
7 8 9

我想忽略以“@”字符开头的行。我当前用于解析文件的代码很简单。

string line;
while(getline(in, line)) {
if(line[0] == '@')
continue
// do something with line
}

文件中@标记的数量会很小,并且总是出现在文件的开头,但我不想在每次读取后都经过 if 检查。我宁愿在一个单独的函数中读取标题部分,然后开始读取所需的数据而不需要 if 检查。我该怎么做?

最佳答案

当然你可以这样做::

do{
getline(in, line);
}while(line[0] == '@')

do{
//do something with line
}while(/* not EOF*/)

但您可能也对著名的 answer about branch prediction 感兴趣.它基本上告诉您处理器通常非常擅长“猜测” if 语句的正确结果,特别是如果如您所说,在几行之后结果将始终相同。因此,您的版本不仅应该具有几乎相同的速度,而且还应该有效,以防您的文件后面有另一行以“@”开头。

关于c++ - 读取文件头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35528704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com