gpt4 book ai didi

c# - 从流阅读器中读取一行而不消耗?

转载 作者:IT王子 更新时间:2023-10-29 04:21:48 25 4
gpt4 key购买 nike

有没有办法提前读一行来测试下一行是否包含特定的标签数据?

我正在处理具有开始标记但没有结束标记的格式。

我想读取一行,将其添加到一个结构中,然后测试下面的行以确保它不是一个新的“节点”,如果它不是继续添加,如果它关闭该结构并创建一个新的

我能想到的唯一解决方案是让两个流读取器同时运行,有点像锁定步骤那样缓慢,但这似乎很浪费(如果它能工作的话)

我需要类似 peek 但 peekline 的东西

最佳答案

问题是底层流可能甚至不可搜索。如果您查看流读取器实现,它使用缓冲区,因此即使流不可搜索,它也可以实现 TextReader.Peek()。

您可以编写一个简单的适配器来读取下一行并在内部对其进行缓冲,如下所示:

 public class PeekableStreamReaderAdapter
{
private StreamReader Underlying;
private Queue<string> BufferedLines;

public PeekableStreamReaderAdapter(StreamReader underlying)
{
Underlying = underlying;
BufferedLines = new Queue<string>();
}

public string PeekLine()
{
string line = Underlying.ReadLine();
if (line == null)
return null;
BufferedLines.Enqueue(line);
return line;
}


public string ReadLine()
{
if (BufferedLines.Count > 0)
return BufferedLines.Dequeue();
return Underlying.ReadLine();
}
}

关于c# - 从流阅读器中读取一行而不消耗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/842465/

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