2015-01-21 6 views
3

stdin에서 입력을 읽으면 String가 생성되지만 어떻게 정수로 변환합니까? 사용 parse녹을 정수로 변환하려면 어떻게해야합니까?

use std::io; 

fn main() { 
    println!("Type something"); 

    let mut input = String::new(); 

    io::stdin() 
     .read_line(&mut input) 
     .expect("Failed to read line"); 

    println!("{}", input); 
} 
+4

[Rust Book]을 읽어야합니다. [특히 표준 입력에서 숫자를 읽는 방법을 다루고 있습니다] (http://doc.rust-lang.org/book/guessing-game.html). – Shepmaster

답변

11

: 문자열의 숫자를 구문 분석에 실패 할 수 있음을

use std::io; 

fn main() { 
    println!("Type something"); 

    let mut line = String::new(); 

    io::stdin() 
     .read_line(&mut line) 
     .expect("Failed to read line"); 

    let input: u32 = line 
     .trim() 
     .parse() 
     .expect("Wanted a number"); 

    println!("{}", input); 
} 

주, 그래서 Result이 반환됩니다. 이 예에서는 expect을 사용하여 실패 사례를 패닉시킵니다.

는 또한 read_line 그렇게 trim, 해석하기 전에를 무시하는 데 사용됩니다, 를 Enter 키를 눌러에서 줄 바꿈을 떠난다.

+1

Sidenote : 'T'가 'FromStr' 형질을 구현하는 한'T' 형을 얻기 위해'& str'에 대한 구문 분석을 호출 할 수 있습니다. – tolgap

관련 문제