4

所以 TextReader.ReadLine() 返回一个字符串,但 TextReader.Read() 返回一个 int 值。这个 int 值似乎也是某种我不认识的格式。是否可以将此整数转换为字符?谢谢你的帮助。

编辑:

TextReader Values = new StreamReader(@"txt");

    string SValue1;
    int Value1;       
    Value1 = Values.Read();        
    Console.WriteLine(Value1);
    Console.ReadKey();

当它读出值时,它给我 51 作为输出。txt文件中的第一个字符是3,为什么会这样呢?

4

3 回答 3

2

根据StringReader 类(TextReader 的子类)的文档,Read()可以将 的返回值转换为 char,但您需要先检查您是否位于文件/字符串的末尾(通过检查 - 1)。例如,在文档中修改的代码中:

while (true)
{
    int integer = stringReader.Read();

    // Check for the end of the string before converting to a character.
    if (integer == -1)
        break;

    char character = (char) integer; // CONVERT TO CHAR HERE

    // do stuff with character...
}
于 2011-06-27T00:52:38.583 回答
2

文档告诉您:如果没有更多数据要读取,则返回 -1,否则返回字符,作为整数。整数不是“某种格式”;整数是原始数据。相反,它是“格式化”的字符;磁盘上的字节必须被解释为字符。

在检查 -1 (这不是一个有效的字符值并表示流的结尾 - 这就是该方法以这种方式工作的原因:因此您可以检查)之后,您可以通过简单的转换进行转换。

于 2011-06-27T00:53:27.527 回答
2

Read返回int可以检测到流结束 (-1) 的 o。是的,您只需将结果转换为 char 中的var c = (int) reader.Read();.

典型用法:

while (true)
{
    int x = reader.Read();
    if (x == -1) break;
    char c = (char) x;
    // Handle the character
}
于 2011-06-27T00:53:46.277 回答