Если вы делаете это как приложение командной строки, то вот код, который я написал на прошлой неделе, чтобы получить строку из командной строки (я сделал ее категорией NSString
):
+ (NSString *) stringFromStandardInDelimitedByCharactersInSet:(NSCharacterSet *)delimiters {
NSMutableString * string = [NSMutableString string];
unichar input = '\0';
while (input = getchar()) {
if ([delimiters characterIsMember:input]) { break; }
[string appendFormat:@"%C", input];
}
return string;
}
А потом я бы использовал это так:
NSString * input = [NSString stringFromStandardInDelimitedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
Он не очень хорошо обрабатывает символы юникода (несмотря на использование unichar), потому что getchar () возвращает только обычный символ. Тем не менее, для основного ввода текста в командной строке, он работает довольно хорошо Однако следует помнить, что это заблокирует поток, в котором он выполняется (поскольку getchar () является блокирующим вызовом).