В чем разница между read и readline в C #? - PullRequest
4 голосов
/ 30 мая 2009

В чем разница между read() и readline() в C #?

Может быть, мы не используем его, но в моей академии единственная разница в том, что у одного есть "линия", а у другого нет ... В c ++ есть «cin» и есть «endl» для добавления строки. Может кто-нибудь сказать мне разницу?

Ответы [ 2 ]

8 голосов
/ 30 мая 2009

Вы имеете в виду TextReader.Read и TextReader.ReadLine?

Одна перегрузка TextReader.Read читает символы в буфер (a char[]), и вы можете указать, сколько символов вы хотите, чтобы он прочитал (как максимум). Другой читает один символ, возвращая int, который будет равен -1, если вы достигли конца читателя.

TextReader.ReadLine читает всю строку как string, которая не включает в себя терминатор строки.

Насколько я знаю, endl чаще используется вместе с cout в C ++:

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

В .NET вы бы использовали

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

для выполнения того же действия (для соответствующего TextWriter; в качестве альтернативы используйте Console.WriteLine для консоли).

EDIT: Console.ReadLine читает строку текста, тогда как Console.Read читает один символ (это похоже на перегрузку без параметров TextWriter.Read).

Console.ReadLine() в основном совпадает с Console.In.ReadLine(), а Console.Read() в основном совпадает с Console.In.Read().

РЕДАКТИРОВАТЬ: В ответ на ваш комментарий к другому ответу, вы не можете сделать:

int x = Console.ReadLine();

потому что тип возвращаемого значения Console.ReadLine() является строкой, и преобразование из string в int отсутствует. Вы можете сделать

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!");
}
2 голосов
/ 30 мая 2009

Если вы говорите о Console.Read и Console.ReadLine, то разница в том, что Read возвращает только один символ, а ReadLine возвращает всю строку ввода. Важно отметить, что в обоих случаях вызов API не будет возвращаться до тех пор, пока пользователь не нажмет ENTER, чтобы отправить текст в программу. Поэтому, если вы наберете «abc», но не нажмете ENTER, и Read, и ReadLine будут блокироваться, пока вы не сделаете.

...