2016-08-25 2 views
2

에 표준 입력으로 새로운 라인에 가지 않기 방법 :이 코드가 녹

fn main() { 
    let mut stdin = io::stdin(); 
    let input = &mut String::new(); 

    loop { 
     input.clear(); 
     print!("Your age: "); 
     stdin.read_line(input); 
     print!("{}", input); 
    } 
} 

그래서 입력 뭔가 프로그램이 "당신의 나이 :"반환 플러스 내 입력을. 그러나 프로그램을 실행할 때 입력을 새 줄에 쓰고 싶지 않습니다. 파이썬에서 그런 일을하려면, 내가 쓸 수 있습니다 :

var = input("Your age: ") 

어떻게 새로운 라인에가는 피할 수있다? 에서

use std::io::{self, Write}; 

fn main() { 
    let mut stdin = io::stdin(); 
    let input = &mut String::new(); 

    loop { 
     input.clear(); 
     print!("Your age: "); 
     io::stdout().flush(); 
     stdin.read_line(input); 
     print!("{}", input); 
    } 
} 

: 나는 간단 확신하지만 난 정말 그 작업을 수행하는 방법을 깨달을 수 없다, 나는 다른 물건을 많이 ... 당신은 라인을 읽기 전에 stdout를 세척 할 필요가

+2

'let mut input = String :: new();'을 사용하고'stdin.read_line (& mut 입력); '을 사용하는 것이 더 관용적 일 수 있습니다. 좀 더 자세한 내용이지만 임시 참조를 참조로 바인딩하는 것보다 덜 이상합니다. –

답변

3

시도 print! documentation : 출력이 즉시 방출되도록 io::stdout().flush()를 사용할 필요가있을 수 있으므로 표준 출력임을

주 자주 기본적 라인 버퍼.