Tweet

2018年11月23日金曜日

Objective-c (Clang3.8.0) 標準入力を配列として取得するサンプルコード

こういう人向け

  • Objective-cで空白、改行をふくむ標準入力をストレートに配列で収納して取得したい人
  • そもそもObjective-cで標準入力はじめてやる人

参考サイト

標準入出力の操作方法(Obj-C)

コーディング

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // 標準入力を取得する
        NSData *stdinData = [[NSFileHandle fileHandleWithStandardInput] availableData];
        NSString *stdinString = [[NSString alloc] initWithData:stdinData encoding:NSUTF8StringEncoding];
        
        //標準入力を半角スペース,改行区切りで配列に格納する
        NSArray *stdinArray = [stdinString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
        
        //配列から空白を削除して、データのみを配列に整理
        NSMutableArray *mStdinArray = [stdinArray mutableCopy];
        [mStdinArray removeObject:@""];
        [mStdinArray removeObject:@" "];
        
        // TODO: 問題を解く
        
        // 解答を半角スペース区切りで文字列とする
        NSString *stdoutString = [mStdinArray componentsJoinedByString:@" "];
        
        // 解答を標準出力する
        NSFileHandle *fileHandle = [NSFileHandle fileHandleWithStandardOutput];
        [fileHandle writeData:[stdoutString dataUsingEncoding:NSUTF8StringEncoding]];
        [fileHandle writeData:[@"\n" dataUsingEncoding:NSUTF8StringEncoding]];
        [fileHandle closeFile];
    }
    
    return 0;
}

0 件のコメント:

コメントを投稿