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.