RCIE-ジャンクのコード屋

主に自分のためにコーディングのTIPSを蓄積しています。

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!("「{}」が入力されました。", 入力);
}
実行結果

f:id:rcie:20210830215112p:plain:w480
「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)にする。
    // └ 行末にセミコロン(;)がないので、これが関数の結果になる。
}