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
}