キーボード入力
// 入出力を使う
use std::io;
fn main() {
// 変数 buffer を定義
let mut buffer = String::new();
// bufferへ文字列入力
io::stdin().read_line(&mut buffer);
// bufferを表示
println!("{}",buffer);
}
文字列→数値
// 入出力を使う
use std::io;
fn main() {
// 変数 buffer を定義
let mut buffer = String::new();
io::stdin().read_line(&mut buffer); //標準入力から入力
// 型指定 :i32 が必要
// read_lineから読み込んだ文字列に対してはtrim()が必要
let val:i32 = buffer.trim().parse().unwrap();
// bufferを表示
println!("{}",val);
}
ファイル入力
// ファイル入力を使う
use std::{fs::File, io::Read};
fn main() {
let filename = "test.txt";
// ファイル入力を使う
let mut file = File::open(filename).expect("file not found");
// 変数 buffer を定義
let mut buffer = String::new();
// ファイルから入力
file.read_to_string(&mut buffer).expect("something went wrong reading the file");
// ファイルを閉じる方法
// 方法1 スコープを抜けるとdropが呼ばれる(C++のデストラクタのようなもの)
// 方法2 明示的にdropを呼び出す
drop(file); // 明示的にdropを呼び出す
// bufferを表示
println!("{}",buffer);
}
ファイル出力
use std::fs::File;
// write!やwrite_allを使うのに必要
use std::io::Write;
// 戻り値は std::io::Result<()> 型
// 最後に OK(()) を返す。
// これを入れないとwrite_allなどが使えない
fn main()-> std::io::Result<()> {
let filename = "test.txt";
// ファイル入力を使う
let mut file = File::create(filename)?;
// 末尾の ? は例外処理のようなもの関連
// ただしRustには例外がないのであくまでそれっぽく振る舞うだけ。
// 変数 buffer を定義
let _buffer = "hello".to_string();
// ファイルへ書き出し
file.write_all(_buffer.as_bytes())?;
// こっちも使える
// write!(file,"hello2")?;
// ファイルを閉じる
drop(file);
// std::io::Result<()> 型の場合
Ok(())
}