녹을 배우려면 HackerRank 30 일 챌린지, 프로젝트 오일러 및 기타 프로그래밍 콘테스트와 같은 것들을보고 있습니다. 첫 번째 장애물은 한 줄의 표준 입력에서 여러 정수를 읽는 것입니다.한 줄의 표준 입력에서 여러 정수를 읽으려면 어떻게해야합니까?
C++에서 나는 편리하게 말할 수 있습니다 :
cin >> n >> m;
을 어떻게 녹에서 관용구이해야합니까?
녹을 배우려면 HackerRank 30 일 챌린지, 프로젝트 오일러 및 기타 프로그래밍 콘테스트와 같은 것들을보고 있습니다. 첫 번째 장애물은 한 줄의 표준 입력에서 여러 정수를 읽는 것입니다.한 줄의 표준 입력에서 여러 정수를 읽으려면 어떻게해야합니까?
C++에서 나는 편리하게 말할 수 있습니다 :
cin >> n >> m;
을 어떻게 녹에서 관용구이해야합니까?
가장 좋은 방법은, 내가 아는 한, 그냥이 같은 정수로 사람들을지도 한 후 입력 라인을 분할하는 것입니다 :
use std::io;
let mut line = String::new();
io::stdin().read_line(&mut line).expect("Failed to read line");
let inputs: Vec<u32> = line.split(" ")
.map(|x| x.parse().expect("Not an integer!"))
.collect();
// inputs is a Vec<u32> of the inputs.
것은이 것 panic!
입력이 잘못된 경우주의하십시오; 이것을 피하려면 handle the result values properly을 사용해야합니다.
scan-rules 나무 상자 (docs)를 사용하면 이러한 종류의 스캔이 쉬워지고 (강력한 기능도 있습니다).
다음 예제 코드는 scan-rules
0.1.3 버전을 사용합니다 (cargo 스크립트로 파일을 직접 실행할 수 있음).
예제 프로그램은 공백으로 구분 된 두 개의 정수를 같은 줄에 받아들입니다.
// cargo-deps: scan-rules="^0.1"
#[macro_use]
extern crate scan_rules;
fn main() {
let result = try_readln! {
(let n: u32, let m: u32) => (n, m)
};
match result {
Ok((n, m)) => println!("I read n={}, m={}", n, m),
Err(e) => println!("Failed to parse input: {}", e),
}
}
테스트 실행 : 당신은 가능성이 downvotes을 받고
4 5
I read n=4, m=5
5 a
Failed to parse input: scan error: syntax error: expected integer, at offset: 2
이 http://meta.stackoverflow.com/questions/261592/ ([당신이 어떤 노력을했습니다 즉 것으로 예상 있기 때문에 stack-overflow-users/261593 # 261593)를 사용하여 문제를 해결할 수 있습니다. 현재와 같이 귀하의 질문은 [다음과 같이] 보입니다 (http://odesk.ro/wp-content/uploads/2013/10/Quotes31.jpg). – Shepmaster
관련 항목 : [기능 스타일을 사용하여 플로트 목록에 문자열을 파싱하려면 어떻게합니까?] (http://stackoverflow.com/questions/19507730/how-do-i-parse-a-string-to-a-list) 부동 소수점을 사용하는 함수형) – Shepmaster
관련 항목 : [실패 할 경우 표준 입력에서 여러 int를 읽는 가장 쉬운 방법은 무엇입니까?] (http://stackoverflow.com/q/35860264/155423) – Shepmaster