iPhoneアプリ開発日記10 NSStringとinit~地獄(勝手に命名)空白文字削除 | 英数勉強計画+ゲームとか

英数勉強計画+ゲームとか

学年一位は無理っぽいんで、路線変更して英語と数学の勉強をどんどんすすめていこうと思いました
中3までに高2範囲を終わらせるつもりですw

ゲームもやります
勉強:その他=5:5な感じで更新していきたいと思います

ついに10回目いきました。
300ページ突破する予定でしたが、空白文字削除でつまずきました。

空白文字削除自体は難しくないと思うんですが、なぜか難しくなっている。
今までは、URLからソースを取得したり、テキストを結合するだけの簡単なプログラムでした。

しかし、今回は
ユーザーにテキストを入力してもらい、enterで決定するプログラムを作りました。
空白文字とは spaceキーとかでつくれる間のことで、enterをおすとき無駄な行が出るのでそれを消そうということです。(説明下手ですいません)

今回のそのプログラムは


#import

int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];


char input[10];
printf("type text:");
fgets(input, 100, stdin);
id str = [[[NSString alloc] initWithCString:
input encoding:NSUTF8StringEncoding] autorelease];
str = [str stringByTrimmingCharactersInSet:[NSCharacterSet
whitespaceAndNewlineCharacterSet]];
NSLog(@"Hello,%@!!",str);


[pool drain];
return 0;
}

これです。理解するのに手間取った。。。

自分なりに説明するとchar配列をつくって、fgets関数でテキストを入力して、initWithCStringで初期化してencoding:NSUTF8StringEncodingでinputにエンコードします。

この時点で変数strは入力した文字を保管できます。
で、[str stringByTrimmingCharactersInSet:[NSCaracterSetwhitespaceAndNewlineCharacterSet]];
これでenterしたときにできた余分の一行を消します。


意味不明ですね。
自分でもほぼ分かりません。
間違ってるかもしれませんが自分ではこう理解しています。

まあ理解できたということで次ぎにいきたいです。