gpt4 book ai didi

c# - 奇怪的问号,将 StreamReader 设置为开始时

转载 作者:太空狗 更新时间:2023-10-29 22:25:17 25 4
gpt4 key购买 nike

我正在编写一个关于求职面试的程序。一切正常,除了一件事。当我使用外部方法 TotalLines(我有单独的 StreamReader)时,它工作正常,但是当我计算程序中的一些 totalLines 时,我在第一个问题的开头收到一个问号。所以它是这样的:

?你叫什么名字?

但在我正在阅读的文本文件中,我刚刚 - 你叫什么名字?

我不知道为什么会这样。也许我将 StreamReader 返回到开始有问题?我检查了我的编码,一切,但没有任何效果。感谢您的帮助:)

PotentialEmployee potentialEmployee = new PotentialEmployee();
using (StreamReader InterviewQuestions = new StreamReader(text, Encoding.Unicode))
{
int totalLines = 0;
while (InterviewQuestions.ReadLine() != null)
{
totalLines++;
}
InterviewQuestions.DiscardBufferedData();
InterviewQuestions.BaseStream.Seek(0, SeekOrigin.Begin);

for (int numberOfQuestions = 0; numberOfQuestions < totalLines; numberOfQuestions++)
{
string question = InterviewQuestions.ReadLine();
Console.WriteLine(question);
string response = Console.ReadLine();
potentialEmployee.Responses.Add(question, response);
}
}

但是当我在外部方法中进行 TotalLines 计算时,问号不显示。有什么想法吗?

最佳答案

文件很可能以 byte order mark (BOM) 开头最初读者会忽略它,但当您“倒回”流时则不会。

虽然您可以创建一个新的阅读器,或者甚至只是在阅读后替换它,但我认为最好避免在开始时读取文件两次:

foreach (var question in File.ReadLines(text, Encoding.Unicode))
{
Console.WriteLine(question);
string response = Console.ReadLine();
potentialEmployee.Responses.Add(question, response);
}

这是更短、更简单、更高效的代码,也不会显示您询问的问题。

如果您想确保在提问之前可以阅读整个文件,这也很容易:

string[] questions = File.ReadAllLines(text, Encoding.Unicode);
foreach (var question in questions)
{
Console.WriteLine(question);
string response = Console.ReadLine();
potentialEmployee.Responses.Add(question, response);
}

关于c# - 奇怪的问号,将 StreamReader 设置为开始时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54669977/

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