ユーザー入力の読み取り
CoddyのRustジャーニー「Fundamentals」セクションの一部 — レッスン 30/75。
これまで、私たちはコードの中に直接値を書き込むプログラムを作成してきました。しかし、実際のプログラムでは、ユーザーと対話し、ユーザーから情報を取得する必要があることがよくあります。
Rustでは、ユーザーからの入力を取得するにはstd::ioライブラリを使用します。このライブラリは、整数、浮動小数点数、文字列など、さまざまな種類の入力を読み取るためのメソッドを提供しています。
std::ioライブラリを使用するには、まずそれをインポートする必要があります:
use std::io;ユーザーから入力を読み取るには、2行のコードが必要です:
let mut my_var = String::new();
// 入力を格納するための空の文字列を作成します
io::stdin().read_line(&mut my_var).unwrap();
// 入力を読み取りますこれは入力値を my_var 変数に文字列型として保存します。
数値を取得したい場合は、テキスト入力を数値に変換するための追加の手順が必要です:
let age: i32 = input.trim().parse().unwrap();ユーザーがEnterキーを押すと入力に改行文字が追加されるため、.trim() が必要です。例えば、誰かが "25" と入力してEnterキーを押した場合、実際の入力は "25\n" になります。.trim() は、入力の前後にあるこれらの余分な空白文字(スペース、改行など)を削除します。
今のところ、unwrap() についてあまり心配しないでください。これについては後で学びます。潜在的なエラーを単純な(理想的ではありませんが)方法で処理するのに役立つということだけ知っておいてください。
チャレンジ
初心者ユーザーから入力(名前)を受け取り、次に Hello, と出力し、その後にユーザーが入力した名前と感嘆符を続けるプログラムを作成してください。
例えば、ユーザーが Bob と入力した場合、期待される出力は Hello, Bob! です。
以下の手順が必要です:
- 入力を読み取るための
Stringオブジェクトを作成します。 - ユーザーに名前の入力を促します:"
Enter your name:" - 適切な
std::ioメソッドを使用してユーザーの名前を読み取ります。 Hello,の後に保存された名前と、最後に感嘆符!を出力します。
チートシート
Rustでユーザー入力を取得するには、std::ioライブラリをインポートします:
use std::io;ユーザーから文字列の入力を読み取るには:
let mut my_var = String::new();
io::stdin().read_line(&mut my_var).unwrap();文字列の入力を数値に変換するには:
let age: i32 = input.trim().parse().unwrap();.trim()メソッドは、入力から空白文字(Enterキーを押したことによる改行を含む)を削除します。
自分で試してみよう
use std::io;
fn main() {
// Stringオブジェクトを作成する
let mut name = String::new();
// ユーザーに名前の入力を促す (printlnを使用)
// ユーザーの名前を読み取る
// 挨拶メッセージを表示する
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。