【问题标题】:read one char at a time until i reach an empty space in C#一次读取一个字符,直到我到达 C# 中的空白空间
【发布时间】:2014-01-20 19:10:48
【问题描述】:

我真的迷路了,不知道我做错了什么。

StreamReader reader = new StreamReader (@"Destination.txt");
int i=0;
char[] word = new char[16];
While (reader.Peek().ToString() != " ")
{
    word[i] = (char)reader.Read(); //This is when the debugger stops, after 16 iterations.
    i++;
}

我肯定知道,在 txt 中,在最多 15 个字符之后总是有一个空格,所以它不应该超过单词数组的边界,但确实如此。我在这里做错了什么? 我使用 Tostring 的原因是 Peek 命令出于某种原因不断返回 Int。

【问题讨论】:

  • 不确定,但尝试将' ' 作为字符而不是字符串进行比较?
  • 那么你知道什么!?有效!我做了 (char) 而不是 tostring 并与 ' ' 相比,它有效!谢谢!

标签: c# file file-io


【解决方案1】:

Peek返回的是char的code,不是char本身,所以需要转换一下:

while ((char)reader.Peek() != ' ')

【讨论】:

  • 谢谢! Marcin 告诉我在 cmets 中这样做,它可以工作,感谢您的帮助,我真是太傻了。
  • @Bodokh,在这里了解根本原因是个好主意。这不仅仅是与错误的文字进行比较(毕竟,在上面的代码中,您可以在左侧调用ToString())。这是关于对Peek 函数结果的误解。
【解决方案2】:

当 StreamReader.Peek() 返回 -1 时,表示文件结束。

while (reader.Peek() != -1)

【讨论】:

    猜你喜欢
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 2018-11-11
    • 2011-02-08
    • 2014-10-26
    相关资源
    最近更新 更多