Rust-입력 출력
이 장에서는 표준 입력 (키보드)에서 값을 받아들이고 표준 출력 (콘솔)에 값을 표시하는 방법에 대해 설명합니다. 이 장에서는 명령 줄 인수 전달에 대해서도 설명합니다.
리더 및 라이터 유형
입력과 출력을위한 Rust의 표준 라이브러리 기능은 두 가지 특성을 중심으로 구성됩니다.
- Read
- Write
Sr. 아니요 | 특성 및 설명 | 예 |
---|---|---|
1 | Read Read를 구현하는 유형에는 바이트 지향 입력을위한 메소드가 있습니다. 그들은 독자라고 | Stdin, 파일 |
2 | Write Write를 구현하는 유형은 바이트 지향 및 UTF-8 텍스트 출력을 모두 지원합니다. 그들은 작가라고 불립니다. | Stdout, 파일 |
특성 읽기
Readers프로그램이 바이트를 읽을 수있는 구성 요소입니다. 예를 들어 키보드, 파일 등에서 입력 읽기가 있습니다.read_line() 이 특성의 메서드는 파일 또는 표준 입력 스트림에서 한 번에 한 줄씩 데이터를 읽는 데 사용할 수 있습니다.
Sr. 아니요 | 특성 | 방법 및 설명 |
---|---|---|
1 | 읽다 | read_line(&mut line)->Result 한 줄의 텍스트를 읽고 문자열 인 줄에 추가합니다. 반환 값은 읽은 바이트 수인 io :: Result입니다. |
그림-콘솔에서 읽기-stdin ()
Rust 프로그램은 런타임에 사용자로부터 값을 받아야 할 수도 있습니다. 다음 예제는 표준 입력 (키보드)에서 값을 읽고 콘솔에 인쇄합니다.
fn main(){
let mut line = String::new();
println!("Enter your name :");
let b1 = std::io::stdin().read_line(&mut line).unwrap();
println!("Hello , {}", line);
println!("no of bytes read , {}", b1);
}
표준 입력 () 함수는 어떤 현재 프로세스의 표준 입력 스트림 핸들 리턴 read_line의 기능이 적용될 수있다. 이 함수는 줄 끝 문자를 만날 때 입력 버퍼에있는 모든 문자를 읽으려고합니다.
산출
Enter your name :
Mohtashim
Hello , Mohtashim
no of bytes read , 10
특성 쓰기
Writers프로그램이 바이트를 쓸 수있는 구성 요소입니다. 예를 들면 콘솔에 값 인쇄, 파일에 쓰기 등이 있습니다.이 특성의 write () 메서드는 파일 또는 표준 출력 스트림에 데이터를 쓰는 데 사용할 수 있습니다.
Sr. 아니요 | 특성 | 방법 및 설명 |
---|---|---|
1 | 쓰다 | write(&buf)->Result 슬라이스 buf의 일부 바이트를 기본 스트림에 씁니다. 기록 된 바이트 수인 io :: Result를 반환합니다. |
그림-콘솔에 쓰기-stdout ()
인쇄! 또는 println! 매크로를 사용하여 콘솔에 텍스트를 표시 할 수 있습니다. 그러나 write () 표준 라이브러리 함수를 사용하여 일부 텍스트를 표준 출력에 표시 할 수도 있습니다 .
이것을 이해하기위한 예를 고려해 보겠습니다.
use std::io::Write;
fn main() {
let b1 = std::io::stdout().write("Tutorials ".as_bytes()).unwrap();
let b2 = std::io::stdout().write(String::from("Point").as_bytes()).unwrap();
std::io::stdout().write(format!("\nbytes written {}",(b1+b2)).as_bytes()).unwrap();
}
산출
Tutorials Point
bytes written 15
표준 출력 () 표준 라이브러리 함수는, 현재의 프로세스의 표준 출력 스트림에 핸들을 리턴되는 행write기능을 적용 할 수 있습니다. write () 메서드는 enum, Result를 반환합니다. unwrap ()은 열거에서 실제 결과를 추출하는 도우미 메서드입니다. unwrap 메서드는 오류가 발생하면 패닉을 보냅니다.
NOTE − 파일 IO는 다음 장에서 설명합니다.
명령 줄 인수
명령 줄 인수는 프로그램을 실행하기 전에 프로그램에 전달됩니다. 함수에 전달되는 매개 변수와 같습니다. CommandLine 매개 변수를 사용하여 값을 main () 함수 에 전달할 수 있습니다 . 그만큼std::env::args() 명령 줄 인수를 반환합니다.
삽화
다음 예제는 값을 main () 함수에 명령 줄 인수로 전달합니다. 프로그램은 main.rs 파일 이름으로 작성 됩니다.
//main.rs
fn main(){
let cmd_line = std::env::args();
println!("No of elements in arguments is :{}",cmd_line.len());
//print total number of values passed
for arg in cmd_line {
println!("[{}]",arg); //print all values passed
as commandline arguments
}
}
프로그램은 일단 컴파일되면 main.exe 파일을 생성합니다 . 여러 명령 줄 매개 변수는 공백으로 구분해야합니다. 터미널에서 main.exe 를 main.exe hello tutorialspoint 로 실행합니다 .
NOTE− hello 및 tutorialspoint 는 명령 줄 인수입니다.
산출
No of elements in arguments is :3
[main.exe]
[hello]
[tutorialspoint]
출력에는 main.exe 가 첫 번째 인수이므로 3 개의 인수가 표시됩니다 .
삽화
다음 프로그램은 명령 줄 인수로 전달 된 값의 합계를 계산합니다. 공백으로 구분 된 목록 정수 값이 프로그램에 전달됩니다.
fn main(){
let cmd_line = std::env::args();
println!("No of elements in arguments is
:{}",cmd_line.len());
// total number of elements passed
let mut sum = 0;
let mut has_read_first_arg = false;
//iterate through all the arguments and calculate their sum
for arg in cmd_line {
if has_read_first_arg { //skip the first argument since it is the exe file name
sum += arg.parse::<i32>().unwrap();
}
has_read_first_arg = true;
// set the flag to true to calculate sum for the subsequent arguments.
}
println!("sum is {}",sum);
}
프로그램을 main.exe 1 2 3 4로 실행하면 출력은 다음과 같습니다.
No of elements in arguments is :5
sum is 10