Метод read_line
Метод read_line читает одну строку из входного потока
и добавляет её в конец переданного буфера типа
String. Строка читается вместе с символом перевода
строки "\n", если он присутствует. Метод
возвращает значение типа io::Result<usize>,
содержащее количество прочитанных байт. Параметром метод
принимает изменяемую ссылку на строку, в которую будет
записана прочитанная строка.
Синтаксис
bufread.read_line(&mut string)
Пример
Давайте прочитаем одну строку из стандартного ввода с
помощью stdin и выведем её на экран:
use std::io::BufRead;
fn main()
{
let stdin = std::io::stdin();
let mut line = String::new();
stdin.read_line(&mut line).unwrap();
println!("{}", line);
}
Если пользователь введёт "abcde" и нажмёт Enter,
результат выполнения кода будет таким:
"abcde"
Пример
Давайте прочитаем строку из BufReader, созданного
на основе байтового среза, и посмотрим, что строка содержит
символ перевода строки:
use std::io::BufRead;
use std::io::BufReader;
fn main()
{
let data = "12345\n";
let mut reader = BufReader::new(data.as_bytes());
let mut line = String::new();
let n = reader.read_line(&mut line).unwrap();
println!("bytes: {}", n);
println!("line: {:?}", line);
}
Результат выполнения кода:
bytes: 6
line: "12345\n"
Пример
Давайте прочитаем несколько строк из BufReader
в цикле, пока метод не вернёт 0:
use std::io::BufRead;
use std::io::BufReader;
fn main()
{
let data = "abcde\n12345\n";
let mut reader = BufReader::new(data.as_bytes());
loop
{
let mut line = String::new();
let n = reader.read_line(&mut line).unwrap();
if n == 0
{
break;
}
println!("{}", line.trim_end());
}
}
Результат выполнения кода:
"abcde"
"12345"
Смотрите также
-
метод
lines,
который возвращает итератор по строкам входного потока -
метод
read_line,
который читает строку из стандартного ввода -
метод
read_to_string,
который читает всё содержимое в строку -
структура
BufReader,
которая реализует буферизованное чтение