Objective C - 从多行控制台字符串中读取(Breaks \ newLine)

时间:2013-03-27 15:21:06

标签: objective-c string console-application newline scanf

在objectiveC中是否有一种方法可以从控制台中的用户输入读取包含多行的字符串? 我在Xcode中制作了一个简单的控制台应用程序,我希望人们能够粘贴几行中的SQL查询。

目前我正在使用:

char strIn[512];
NSMutableString* str;
scanf("%[^\n]", strIn);
str = [NSString stringWithUTF8String:strIn];
NSLog(@"\n%@",str);

但这只是第一线。 请记住 - 这不是关于从文件读取,而是仅从控制台读取。 感谢。

1 个答案:

答案 0 :(得分:2)

以下代码可帮助您入门。它从标准输入读取并收集inputString变量中的输入行,直到找到分号。

NSFileHandle *inputFile = [NSFileHandle fileHandleWithStandardInput];
NSMutableString *inputString = [NSMutableString string];

do {
    // Read from stdin, check for EOF:
    NSData *data = [inputFile availableData];
    if ([data length] == 0) {
        NSLog(@"EOF");
        break;
    }
    // Convert to NSString, replace newlines by spaces, append to current input:
    NSMutableString *tmp = [[NSMutableString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    [tmp replaceOccurrencesOfString:@"\n" withString:@" " options:0 range:NSMakeRange(0, [tmp length])];
    [inputString appendString:tmp];
    // Check for semi-colon:
} while ([inputString rangeOfString:@";"].location == NSNotFound);

NSLog(@"input=%@", inputString);

(请注意,此示例代码只是在输入中的某处检查分号。它不会检查分号是否嵌入在字符串中。)

相关问题