C#。当我使用 TextReader.Read() 它返回一个 int 值时怎么会?可以转换为char吗?
Posted
技术标签:
【中文标题】C#。当我使用 TextReader.Read() 它返回一个 int 值时怎么会?可以转换为char吗?【英文标题】:C#. How come when I use TextReader.Read() it returns an int value? Possible to convert to char? 【发布时间】:2011-09-23 04:23:05 【问题描述】:所以 TextReader.ReadLine() 返回一个字符串,但 TextReader.Read() 返回一个 int 值。这个 int 值似乎也是某种我不认识的格式。是否可以将此整数转换为字符?感谢您的帮助。
编辑:
TextReader 值 = new StreamReader(@"txt");
string SValue1;
int Value1;
Value1 = Values.Read();
Console.WriteLine(Value1);
Console.ReadKey();
当它读出值时,它会给我 51 作为输出。 txt文件的第一个字符是3,为什么会这样呢?
【问题讨论】:
Int to Char in C#的可能重复 【参考方案1】:根据the documentation for the StringReader class(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...
【讨论】:
感谢帮助 =] 为什么读取的值最初只是一个数字存在?【参考方案2】:文档告诉您:如果没有更多数据要读取,则返回 -1,否则返回字符,作为整数。整数不是“某种格式”;整数是原始数据。相反,它是“格式化”的字符;磁盘上的字节必须被解释为字符。
在检查了 -1(它不是一个有效的字符值并且代表流的结束 - 这就是该方法以这种方式工作的原因:因此您可以检查)之后,您可以通过简单的强制转换来转换。
【讨论】:
【参考方案3】:Read
返回一个int
o 可以检测到流结束 (-1)。是的,您只需将结果转换为 var c = (int) reader.Read();
中的字符即可。
典型用法:
while (true)
int x = reader.Read();
if (x == -1) break;
char c = (char) x;
// Handle the character
【讨论】:
以上是关于C#。当我使用 TextReader.Read() 它返回一个 int 值时怎么会?可以转换为char吗?的主要内容,如果未能解决你的问题,请参考以下文章
当我在 viewcontroller 上使用 3 视图时,目标 c 会变慢
当我想在目标 c 项目中使用 swift 文件时使用未声明的标识符
当我尝试使用文件维度作为行和列在 C 中创建矩阵时,为啥会出现错误?
当我在 Vim 编辑器中以交互方式执行 c/c++ 中的 wq 时,我可以使用 cppcheck