2014-06-12

Swiftカンフー #002 標準入力から文字列をもらう

プログラミング言語を覚えるには「実際に役に立つプログラムを作ってみるのが一番」というわけで、翻訳作業で役に立つプログラムを作成してみることにしました。

私が自作するプログラムの多くは「フィルタ」です。ファイル(あるいはキーボード)から文字列を読み込んで、何かを処理して出力する。

標準入力(stdin)から文字列をもらう

フィルタを作るには標準入力からの読み込みができないとなりません。C言語のscanf()とか、C++のcinとかみたいに。

Google大明神にお願いすること数度、何とかできました。出典はstackoverflowです。

// example-01-stdin.swift
import Foundation  // Objective-CのNSFileHandleなどが使えるようになる

func データ読み込み() -> String {
  var 標準入力用ファイルハンドル = NSFileHandle.fileHandleWithStandardInput()
  var 生データ = 標準入力用ファイルハンドル.availableData
  var 文字列データ = NSString(data: 生データ, encoding:NSUTF8StringEncoding)
  return 文字列データ
}

func 何か処理(入力文字列: String) -> String {
  return 入力文字列 + 入力文字列 // 2度繰り返す
}

var 読み込んだ文字列 = データ読み込み()
while 読み込んだ文字列 != "" {
  let 処理後の文字列 = 何か処理(読み込んだ文字列) // ここで処理
  print(処理後の文字列)
  読み込んだ文字列 = データ読み込み()
}

0 件のコメント: