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(),只需读入数据(作为字节scanf()或带有 NSFileHandle 的数据)并从中创建一个 NSString,您可以将其格式化为您心中的内容。

于 2009-05-15T17:20:11.527 回答
2

没有什么像scanf这是一件好事)。您可以使用NSFileHandle从标准输入中获取数据;对于交互式输入,fgets更好。然后,您需要使用strtol/ strtoul/ strtod、NSScanner 或 NSNumberFormatter 将输入转换为数字类型。

于 2009-05-15T17:22:22.770 回答