从 cocoa/foundation 工具控制台读取输入?
我想知道 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我之前很无聊,遇到了“use scanf”这个问题。 因为我想看看我是否可以在不进入 c 的情况下做到这一点,所以出现了以下内容:
我确信有人可以优化它并使其变得更好(这用于一个非常简单的 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:
I'm sure somebody could optimize this and make it nicer (this was used for a really simple PoC CLI tool)
Cocoa 对输入的唯一真正支持是 NSFileHandle 的
fileHandleWithStandardInput
。 如果你问我的话,它并不比scanf()
更有用。 但对于获取特定类型的输入,这几乎是 NSFormatter 的事情。 已经有很多针对标准事物的预定义格式化程序类型,如果您有更特殊的需求,您可以制作自定义格式化程序。 因此,如果您需要的不仅仅是scanf()
,只需读入数据(使用scanf()
作为字节或使用 NSFileHandle 读取数据)并从中创建一个 NSString您可以将其格式化为您喜欢的内容。The only real Cocoa support for input is NSFileHandle's
fileHandleWithStandardInput
. It isn't really more useful thanscanf()
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 thanscanf()
, just read in the data (either as bytes withscanf()
or data with NSFileHandle) and make an NSString from it and you can format it to your heart's content.没有像
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 eitherstrtol
/strtoul
/strtod
, NSScanner, or NSNumberFormatter to convert the input to numeric types.