gpt4 book ai didi

c++ - peek() 前面有多个地方?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:16:19 25 4
gpt4 key购买 nike

假设我有一个外部 while 循环来读取每个字符并将其输出到控制台。如果找到一个词,我还想标记它,通过使用 peek 方法,我可以找到一个词的第一个实例。有没有办法窥视前方的多个地方。例如,如果我要查找“发薪日”一词。我知道我可以将它输入到一个字符串中并搜索一个字符串,但我想以二进制模式读取文件并且我不想从外循环中带走任何值。如果我有一个带有读取方法的内部循环,则这些值不会通过外部循环显示。

谢谢

int main()

ifstream strm;
char *chr = new char;

strm.open("mytext.txt",ios::out | ios::binary);

while (strm.read(chr,1)
{
if (strm.peek() == 'p';
{
cout << "found a word beginning with 'p'" << endl;
//what if I want to read multiple characters ahead. Peek will read only one.
}

}

最佳答案

您可以使用 seekg在 istream 中跳转的方法。

如果你以二进制模式打开你的文件,你可以使用tellg标记要跳转到的位置的方法。

但是,如果您以文本模式打开文件,最好使用偏移量跳转(即 strm.seekg(offset, strm.cur)),因为 tellg 和 seekg in文本模式。因此,如果您检测到下一个字符将是“p”,那么您可以读取下一个 n 个字符,如果不是您要查找的字符,则跳回 -n 个字符。

关于c++ - peek() 前面有多个地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20595336/

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