C#中的read和readline有什么区别?

4

read()readline() 在 C# 中有什么区别?

也许我们不会用到它,但在我的学校里,唯一的区别就是一个带有 "line",另一个没有...... 在 c++ 中,有 "cin" 并且有 "endl" 来添加行。 有人可以告诉我它们之间的区别吗?

2个回答

8

您是指TextReader.ReadTextReader.ReadLine吗?

TextReader.Read的一种重载方法将字符读入缓冲区(一个char[]),您可以指定要读取的字符数(最多)。另一种方法读取单个字符,返回一个int,如果已到达读取器的末尾,则返回-1。

TextReader.ReadLine将整行读取为string,不包括行终止符。

据我所知,在C++中,endl更常与cout一起使用:

cout << "Here's a line" << endl;

在.NET中,您将使用

writer.WriteLine("Here's a line")

为了实现相同的功能(对于适当的;或者对于控制台,可以使用 ),需要进行翻译。请注意:读取一行文本,而读取单个字符(就像的无参数重载)。 基本上与 相同, 基本上与 相同。另外,回答您对其他答案的评论,您不能执行:
int x = Console.ReadLine();

由于Console.ReadLine()的返回类型是字符串,而且没有从stringint的转换。你可以进行操作。
int x = Console.Read();

Console.Read()返回一个整数(int)。(再次说明,它是Unicode代码点或“数据结束”时的-1。)

编辑:如果你想从键盘上读取一个整数,即用户输入“15”,并且你想将其作为整数检索出来,那么你应该使用类似于以下的东西:

string line = Console.ReadLine();
int value;
if (int.TryParse(line, out value))
{
    Console.WriteLine("Successfully parsed value: {0}", value);
}
else
{
    Console.WriteLine("Invalid number - try again!");
}

抱歉,我是指 "Console.ReadLine()" 和 "Console.Read()"。 - Sherif
好的,但是您对从键盘读取整数的建议是什么:使用read还是readline并进行转换? - Sherif

2
如果您在谈论Console.Read和Console.ReadLine,它们的区别是Read只返回一个字符,而ReadLine返回整个输入行。需要注意的是,在这两种情况下,API调用不会返回,直到用户按下ENTER将文本提交给程序。因此,如果您键入“abc”但未按ENTER,则Read和ReadLine都会阻塞,直到您按下ENTER。

好的,但是为什么这样:int x;x = Console.Read(); //好的 x = Console.ReadLine(); /错误:无法从字符串转换为整数/而在C++中,我不需要进行转换就可以使用cin获取输入数据到整数。另一方面,在C#中,如果您使用Console.ReadLine(),则必须进行转换..?(向上) - Sherif
Console.ReadLine() 返回一个字符串,而不是一个整数。 - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接