Rust 文字列の入力 stdin, read_line
概要
- 文字列をコンソールから入力するには、stdin() を使う。
- 1行ではできないので、関数にまとめる。
プログラム例
- 標準入力から文字列を受け取る関数「コンソール入力」を作成する。
use std::io::*; // stdinを使うのに必要 fn コンソール入力() -> String { let mut バッファ = String::new(); stdin().read_line(&mut バッファ).unwrap(); バッファ.trim().to_string() } fn main() { let 入力 = コンソール入力(); println!("「{}」が入力されました。", 入力); }
実行結果
「Rust 入門してみた」を入力した場合
解説
- 文字の入力には「stdin().read_line(...)」を使う。
- stdin() や read_line(...) を使うには「use std::io::*;」が必要。
- 関数「コンソール入力」の詳細は以下の通り。
fn コンソール入力() -> String { // └ fn コンソール入力 ◁関数の名前は「コンソール入力」 // └ () -> String ◁関数は何も受け取らないが、String(文字列)を返す。 let mut バッファ = String::new(); // └ mut ◁編集可能な変数を作成する。 // └ String::new() ◁文字列を作成する。中身はない。 stdin().read_line(&mut バッファ).unwrap(); // └ stdin() ◁標準入力を開く。 // └ read_line(格納先) ◁1行読んで格納先に入れる。 // └ &mut バッファ ◁編集可能な変数「バッファ」を格納先にする。 // └ unwrap() ◁エラーが出た場合は強制終了する。 バッファ.trim().to_string() // └ trim() ◁改行文字を取り除く。 // └ to_string() ◁文字列(String)にする。 // └ 行末にセミコロン(;)がないので、これが関数の結果になる。 }