2009-05-15 11 views
2

Objective-C/Foundationにコンソールからユーザー入力を読み込むための特別なコマンドがあるのだろうかと思います。出力用にNSLogがあるので、scanfコマンドの代わりに使うことのできるものが多分あります。ココア/ファウンデーションツールコンソールから入力を読み込みますか?

私のツールにいくつかの数字(ユーザー入力)を読み込む必要があります。 doubleやintのような型でこれらの入力を得る最良の方法は何ですか? NSStringにユーザー入力を得るにはどうしたらいいですか?

答えて

4

入力用の実際のCocoaサポートは、NSFileHandlefileHandleWithStandardInputです。あなたが私に尋ねるなら、実際にはscanf()よりも有用ではありません。しかし、特定の型への入力を得るためには、それはかなりNSFormatterののものです。標準的なものにはあらかじめ定義済みのフォーマッタタイプがたくさんあります。特殊なニーズがある場合はカスタムフォーマッタを作成できます。したがって、scanf()以上のものが必要な場合は、データ(scanf()のバイトまたはNSFileHandleのデータ)を読み込み、そこからNSStringを作成して、あなたの心のコンテンツにフォーマットすることができます。

+0

fileHandleWithStandardInputは、すべてのキーストロークを記録します。 – Mahouk

2

scanfwhich is a good thing)のようなものはありません。 NSFileHandleを使用してstdinからデータを取り出すことができます。対話型入力の場合はfgetsが良いです。入力を数値型に変換するには、strtol/strtoul/strtod、NSScanner、NSNumberFormatterのいずれかを使用します。

9

私は以前は退屈で、この問題は 'scanfを使う'ということになりました。私はCに落下せずにそれを行うことができるかどうかを確認したかったため、次のように思いついた:

NSFileHandle *input = [NSFileHandle fileHandleWithStandardInput]; 
while (1) 
{ 
    NSData* data = [input availableData]; 
    if(data != nil) 
    {  
     NSString* aStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
    } 
} 

私は誰かがこれを最適化し、それがよりよい(これは本当に簡単なのPoC CLIツールを使用した作ることができると確信しています)

+1

ほとんどの方法が得られますが、数値は解析されません。また、あなたが奪ったものを解放することを忘れないでください。 –

+0

は単なるスニペットです。しかし、あなたが正しいです、私は完全さのためにそれを追加する必要があります。 –

+1

これはファイル(app Tobias

関連する問題