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

时间:2009-05-30 16:48:55

标签: c# visual-c++

C#中的read()readline()之间有什么区别?

也许我们不使用它,但在我的学院里,唯一的区别是一个人有“线”而另一个人没有...... 在c ++中,有“cin”并且它有“endl”来添加行。 有人可以告诉我区别吗?

2 个答案:

答案 0 :(得分:8)

您的意思是TextReader.ReadTextReader.ReadLine吗?

TextReader.Read的一个重载将字符读入缓冲区(char[]),您可以指定要读取的字符数(作为最大值)。另一个人读取一个字符,返回一个int,如果你已经到达读者的末尾,那将是-1。

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

据我所知,endl更常用于C ++中的cout

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

在.NET中你会使用

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

完成同样的事情(适用于TextWriter;或者使用Console.WriteLine作为控制台。)

编辑:Console.ReadLine读取一行文字,而Console.Read读取单个字符(就像TextWriter.Read的无参数重载一样)。

Console.ReadLine()Console.In.ReadLine()基本相同,Console.Read()Console.In.Read()基本相同。

编辑:在回答您对其他答案的评论时,您无法做到:

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!");
}

答案 1 :(得分:2)

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