Objective-C/Foundation には、コンソールからユーザー入力を読み取るための特別なコマンドがあるのだろうか。出力用に NSLog があるため、scanf コマンドの代わりに使用できるものがあるかもしれません。
ツールに数値 (ユーザー入力) を読み込む必要があります。これらの入力を double や int などの型で取得する最良の方法は何ですか? また、ユーザー入力を NSString に取得するにはどうすればよいですか?
Objective-C/Foundation には、コンソールからユーザー入力を読み取るための特別なコマンドがあるのだろうか。出力用に NSLog があるため、scanf コマンドの代わりに使用できるものがあるかもしれません。
ツールに数値 (ユーザー入力) を読み込む必要があります。これらの入力を double や int などの型で取得する最良の方法は何ですか? また、ユーザー入力を NSString に取得するにはどうすればよいですか?
私は以前に退屈していて、この「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 ツールに使用されました)。
入力に対する唯一の実際のCocoaサポートは、NSFileHandleのfileHandleWithStandardInput
です。scanf()
あなたが私に尋ねるよりもそれは本当に便利ではありません。しかし、特定のタイプに入力を取得するために、まあ、それはほとんどNSFormatterのものです。標準的なものにはすでに多くの事前定義されたフォーマッタタイプがあり、より専門的なニーズがある場合はカスタムフォーマッタを作成できます。したがって、より少し多くのものが必要な場合scanf()
は、データを(NSFileHandleを使用したバイトscanf()
またはデータとして)読み取り、そこからNSStringを作成するだけで、心ゆくまでフォーマットできます。
scanf
(これは良いことです)のようなものはありません。NSFileHandleを使用して、stdinからデータを丸呑みすることができます。インタラクティブな入力にfgets
は、より良いです。strtol
次に、 / strtoul
/ strtod
、NSScanner、またはNSNumberFormatterのいずれかを使用して、入力を数値タイプに変換します。