スポンサーリンク

Rustやってみる(3)標準入力・ファイル入出力・あと文字列→数値

キーボード入力

// 入出力を使う
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(())

}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: