从 cocoa/foundation 工具控制台读取输入?

发布于 2024-07-19 06:31:52 字数 194 浏览 7 评论 0原文

我想知道 Objective-C/Foundation 是否有任何特殊命令用于从控制台读取用户输入。 由于它有 NSLog 用于输出,也许我可以使用其他东西来代替 scanf 命令。

我需要将一些数字(用户输入)读入我的工具中。 以 double 或 int 等类型获取这些输入的最佳方法是什么? 如何将用户输入获取到 NSString 中?

I wonder if Objective-C/Foundation has any special commands for reading user input from the console. Since it has NSLog for output maybe there is something else I could use instead of the scanf command.

I need to read some numbers (user input) into my tool. What is the best way to get these input in types like double or int? And how do I get user input into an NSString?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

打小就很酷 2024-07-26 06:31:52

我之前很无聊,遇到了“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 工具)

I was bored earlier and came across this issue of 'use scanf'. since I wanted to see if I could do it without dropping into c, the following came up:

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

I'm sure somebody could optimize this and make it nicer (this was used for a really simple PoC CLI tool)

狼亦尘 2024-07-26 06:31:52

Cocoa 对输入的唯一真正支持是 NSFileHandlefileHandleWithStandardInput。 如果你问我的话,它并不比 scanf() 更有用。 但对于获取特定类型的输入,这几乎是 NSFormatter 的事情。 已经有很多针对标准事物的预定义格式化程序类型,如果您有更特殊的需求,您可以制作自定义格式化程序。 因此,如果您需要的不仅仅是 scanf() ,只需读入数据(使用 scanf() 作为字节或使用 NSFileHandle 读取数据)并从中创建一个 NSString您可以将其格式化为您喜欢的内容。

The only real Cocoa support for input is NSFileHandle's fileHandleWithStandardInput. It isn't really more useful than scanf() if you ask me. But for getting input into specific types, well, that's pretty much NSFormatter's thing. There are already a lot of predefined formatter types for standard things, and you can make a custom formatter if you have more specialized needs. So if you need something a little more than scanf(), just read in the data (either as bytes with scanf() or data with NSFileHandle) and make an NSString from it and you can format it to your heart's content.

全部不再 2024-07-26 06:31:52

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

Nothing like scanf (which is a good thing). You can slurp data from stdin using NSFileHandle; for interactive input, fgets is better. You'll then want to use either strtol/strtoul/strtod, NSScanner, or NSNumberFormatter to convert the input to numeric types.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文