Objective c 目标C-获取未知类型的用户输入

Objective c 目标C-获取未知类型的用户输入,objective-c,types,scanf,Objective C,Types,Scanf,我知道,当您知道用户将输入什么数据类型时,可以使用scanf()。如果该信息未知,并且您希望能够处理任何类型的数据,该怎么办?有没有一个简单的方法来实现这一点 i、 e.假设某个类,其中类和函数genericScan() 我想这会让你达到你的目标 char *data = malloc(sizeof(char *) * 256); fgets(data, 256, stdin); NSString *dataString = [NSString stringWithCString:data];

我知道,当您知道用户将输入什么数据类型时,可以使用
scanf()
。如果该信息未知,并且您希望能够处理任何类型的数据,该怎么办?有没有一个简单的方法来实现这一点

i、 e.假设某个类
,其中类
和函数
genericScan()


我想这会让你达到你的目标

char *data = malloc(sizeof(char *) * 256);
fgets(data, 256, stdin);
NSString *dataString = [NSString stringWithCString:data];
NSInteger intValue = [dataString integerValue];
// double d = [dataString doubleValue];, etc.

这将获取用户输入的任何数据,并将其对应的值放入
int
double
,等等。例如,如果没有
integerValue
,它将返回0

是,使用
NSScanner
。概述:

  • 首先以
    NSString
    的形式获取您的输入

  • 现在使用
    +scannerWithString:
    +localizedScannerWithString:
    创建一个
    NSScanner

  • 现在调用各种
    scanX:
    方法;e、 g.
    scanInteger:
    scanDouble:
    ;以适当的顺序;e、 g.在整数之前查找浮点数;直到找到合适的字符串解释。这些方法中的每一个都返回一个
    BOOL
    ,指示它是否成功解析了一个值


请注意,您不应该试图以这种方式区分相同类型的不同大小的值;将它们解析为该类型中的最大类型(例如,
NSDecimalNumber
(如果您希望支持这些类型)或
double
表示浮点,
long
表示整数),然后如果您希望找到可以表示该值的较小类型,请使用范围检查

看看@CodaFi-我想你误读了这个问题。。。
char *data = malloc(sizeof(char *) * 256);
fgets(data, 256, stdin);
NSString *dataString = [NSString stringWithCString:data];
NSInteger intValue = [dataString integerValue];
// double d = [dataString doubleValue];, etc.