단일 입력 줄에서 여러 정수를 읽는 간단한 프로그램으로 내 녹 스킬을 테스트하려고합니다. 그것은 올바르게 컴파일되지만 불행히도 1 2 3
의 입력을 받으면 입력이 유효한 정수가 아니라고 패닉이 발생합니다. 누군가이 이유를 설명해 주시겠습니까? 또한 프로그램 수정 방법에 대한 설명을 제공 할 수 있습니까?정수 입력을 올바르게 읽지 못함
use std::io;
fn main() {
let mut string = String::new();
io::stdin().read_line(&mut string);
let int_vec: Vec<u32> = string.split(" ")
.map(|x| x.parse::<u32>().expect("Not an integer!"))
.collect();
for i in (0..int_vec.len()).rev() {
print!("{} ", int_vec[i]);
}
}
감사합니다. 원래 문자열을 다듬 으려고했지만 함수가 새로운 문자열을 반환한다는 것을 잊었습니다. 이전 문자열을 조작하지 않습니다. 응답 해주셔서 감사합니다! –
@KavanaughDempsey *이 함수는 새로운 문자열을 반환합니다 * - 구체적으로 말하면,'trim'은 새로운 * 문자열 slice *를 반환합니다 ('&str'); 이것은 기존 문자열을 참조하고 새로운 * 소유 문자열을 할당하지 않습니다 * ('String '). – Shepmaster
'.trim(). split ("") 대신에'.split_whitespace()'도 고려해 볼 수 있습니다 .. – delnan