2

Objective-C/Foundation には、コンソールからユーザー入力を読み取るための特別なコマンドがあるのだろうか。出力用に NSLog があるため、scanf コマンドの代わりに使用できるものがあるかもしれません。

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

4

3 に答える 3

9

私は以前に退屈していて、この「use 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 ツールに使用されました)。

于 2009-10-29T05:05:48.280 に答える
4

入力に対する唯一の実際のCocoaサポートは、NSFileHandlefileHandleWithStandardInputです。scanf()あなたが私に尋ねるよりもそれは本当に便利ではありません。しかし、特定のタイプに入力を取得するために、まあ、それはほとんどNSFormatterのものです。標準的なものにはすでに多くの事前定義されたフォーマッタタイプがあり、より専門的なニーズがある場合はカスタムフォーマッタを作成できます。したがって、より少し多くのものが必要な場合scanf()は、データを(NSFileHandleを使用したバイトscanf()またはデータとして)読み取り、そこからNSStringを作成するだけで、心ゆくまでフォーマットできます。

于 2009-05-15T17:20:11.527 に答える
2

scanfこれは良いことです)のようなものはありません。NSFileHandleを使用して、stdinからデータを丸呑みすることができます。インタラクティブな入力にfgetsは、より良いです。strtol次に、 / strtoul/ strtod、NSScanner、またはNSNumberFormatterのいずれかを使用して、入力を数値タイプに変換します。

于 2009-05-15T17:22:22.770 に答える