views:

470

answers:

1

Hi I am making a program that gets input from the keyboard and I was wondering if there was any way to get input from the keyboard and store it in an NSString object.

+1  A: 

If you are doing this as a command-line app, then here's code I wrote last week to get a line from the command prompt (I made it an NSString category):

+ (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;
}

And then I'd use it like this:

NSString * input = [NSString stringFromStandardInDelimitedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];

It doesn't handle unicode characters very well (despite using a unichar), because getchar() only returns a regular char. However, for basic command-line text entry, it works pretty well. However, be warned that this will block the thread on which it's executed (since getchar() is a blocking call).

Dave DeLong