1

コンソールでユーザー入力から複数行の文字列を読み取る方法はobjectiveCにありますか? 私は Xcode で簡単なコンソール アプリを作成しています。数行の SQL クエリを貼り付けられるようにしたいと考えています。

現在私は使用しています:

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

しかし、これは最初の行しか取得しません。覚えておいてください-これはファイルからの読み取りではなく、コンソールからのみです。ありがとう。

4

1 に答える 1

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);

(このサンプル コードは、入力のどこかにセミコロンがあるかどうかを単純にチェックすることに注意してください。たとえば、セミコロンが文字列に埋め込まれているかどうかはチェックしません。)

于 2013-03-28T12:35:01.450 に答える