C#.为什么我使用TextReader.Read()时会返回一个int值?可能转换为char



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

编辑:

TextReader值=新的StreamReader(@"txt");

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

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

根据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...
}

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

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

Read返回一个int,以便可以检测到流(-1)的末尾。是的,您只是将结果强制转换为一个字符,如var c = (int) reader.Read();中所示。

典型用法:

while (true)
{
    int x = reader.Read();
    if (x == -1) break;
    char c = (char) x;
    // Handle the character
}

相关内容

  • 没有找到相关文章

最新更新