我想知道 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()
,只需读入数据(作为字节scanf()
或带有 NSFileHandle 的数据)并从中创建一个 NSString,您可以将其格式化为您心中的内容。
没有什么像scanf
(这是一件好事)。您可以使用NSFileHandle从标准输入中获取数据;对于交互式输入,fgets
更好。然后,您需要使用strtol
/ strtoul
/ strtod
、NSScanner 或 NSNumberFormatter 将输入转换为数字类型。