Rust / 문자열 입력

2022. 12. 29. 16:30프로그래밍/Rust

백준 문제를 풀려다 보니 초반부터 문자열 입력을 받는 문제들이 있더라고요.

 

이번 예제에서는 문자열을 입력받아서 출력해 보겠습니다.

 

 

새로운 프로젝트를 생성합니다.

 

 

main.rs 파일을 아래와 같이 수정합니다.

 

use std::io;

fn main()
{
    let mut user_input = String::new();
    let stdin = io::stdin();
    
    println!("What is your name?");

    let _result = stdin.read_line(&mut user_input);

    let input = user_input.replace("\r", "").replace("\n", "");
    println!("Hello {}!!",  input);
}

 

 

이렇게 코드를 넣고 보니 "Hello, world!" 에서 너무 많이 와버린 것 같습니다.

아무런 준비 없이 여기로 왔다면 바로 창을 닫거나 뒤로 가기를 선택하시는 분도 있을 것 같다는 생각이 드네요.

일단 아무런 사전 준비 없이 "Hello,  world!"에서 바로 넘어오신 분들을 위해 한 줄 한 줄 설명드립니다.

 

각 라인별 코드를 설명하자면

 

1: 1번째 줄의 use 는 이름을 단축해서 사용할 수 있도록 도와줍니다. 6번째 줄에서 io::stdin() 을 보실 수 있는데 만약 1번째 줄의 코드가 없었다면 std::io::stdin()으로 사용해야 합니다. 만약 반복해서 여러 번 쓰인다면 번거로운 일이 되겠지요. 1번째 줄의 코드를 use std::io::stdin; 으로 변경하고,  6번째 줄의 코드를 let stdin = stdin();으로 변경해서 사용하는 것도 가능합니다.

 

5: 러스트는 변수를 선언할 때 let를 사용합니다. 그런데 let만 사용한다면 변수의 값을 바꿀 수 없습니다. 변수가 선언된 이후에 값을 변경할 예정이라면 mut를 붙여주어야 합니다. mut는 mutable의 줄임말입니다.

6: io::stdin()은 표준 입력에 대한 새 핸들을 반환합니다.

 - https://doc.rust-lang.org/std/io/fn.stdin.html

 

8: println!은 문자열을 한 줄 단위로 출력하는 매크로입니다.

 

10: stdin.read_line(&mut user_input) 은 표준 입출력 장치로부터 줄 바꿈이 일어날 때까지의 입력을 읽어서 user_input 변수에 저장합니다. read_line 함수는 읽은 결과를 반환합니다. 여기에서는 그 결과를 _result 변수에 저장합니다. 정상적으로 읽었다면  읽은 데이터의 길이 값을 반환하고, 읽는 과정에서 문제가 생겼을 경우 Error를 반환합니다. 만약에 읽은 결과를 표시하려면 _result 변수를 match를 통해 처리할 수 있습니다. match와 관련된 예제는 다른 예제에서 보시게 될 겁니다. 러스트에서는 사용하지 않는 변수 이름 앞에 '_'를 붙이는 것으로 사용하지 않는 변수임을 명시할 수 있습니다. 붙이지 않으면 컴파일러가 경고를 출력합니다. 계속해서 컴파일러에게 혼나다 보면 알아서 고쳐서 쓰게 됩니다.

 

12: 10번째 라인의 read_line() 함수로 입력 받은 경우에 문자열의 끝에 줄 넘김 문자까지 저장됩니다. 여기에서 줄 넘김 문자를 제거하기 위해 replace() 함수를 사용하였습니다. 윈도우에서는 줄 단위로 문자열을 읽었을 때 문자열의 끝에 CR(Carriage return, '\r'), LF(Line Feed, '\n')를 사용하고, 리눅스에서는 LF(Line Feed, '\n')를 사용합니다.

 

13: println!() 함수에서는 문자열 중간에 변수 값을 넣기 위해 "{}"를 사용합니다. 이것의 여러가지 사용 방법은 다른 예제에서 알아볼 예정입니다.

 

 

프로그램의 실행 결과는 다음과 같습니다.

 

 

결과만 놓고 보면 별거 없네요.

 

 

 

 

아래의 사이트를 방문하여 전체 코드를 받으실 수 있습니다.

 

https://gitlab.com/cellaxon/examples/rust/key_input

 

 

사업자 정보 표시
주식회사 셀엑손 (CELLAXON Inc. | 이상효 | 경기도 화성시 동탄감배산로 143, 202동 2409호 | 사업자 등록번호 : 304-81-34245 | TEL : 031-8043-3215 | Mail : ryan@cellaxon.com | 통신판매신고번호 : 2022-화성동탄-0844호 | 사이버몰의 이용약관 바로가기

'프로그래밍 > Rust' 카테고리의 다른 글

opencv 비디오 파일의 영상 표시(rust/macos)  (0) 2024.08.28
opencv with rust in windows  (0) 2024.08.27
Rust / "Hello World"  (0) 2022.12.29
Rust / 러스트 설치하기  (0) 2022.12.29