プログラマメモ2 - programmer no memo2

[objective-c][cocoa]NSString 2008/11/13
2008/11/13

Objective-Cです。Cocoaです。
NSStringです。

NSLogを使って、Terminalで日本語を出力しようとしていて、何故か出力されなくて困ってしまいました。

NSLog(@"日本語");

この一行で出力がとまってしまうのです。
原因は、Terminalの設定-詳細-言語環境-文字エンコーディングがEUCの環境で動作させていたからでした。
unicode(UTF-8)にしたら出力されました。
Orz...

コード
#import <Foundation/NSString.h>
#import <Foundation/NSAutoreleasePool.h>

int main(void){
// !!
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

NSString *s = @"123日本語";
NSString *s2 = [NSString stringWithCString:"123日本語" encoding:NSUTF8StringEncoding];
NSString *s3 = [NSString stringWithString:@"123日本語"];

NSLog(@"123日本語");
NSLog(s);
NSLog(s2);
NSLog(s3);
return 0;
}


Objective-Cではソースコードで文字列を扱うときには@""とします。
C言語ライクに使う場合は、""でよいようです。

この書き方で書くとオブジェクト定数(object constant)というものになって、NSStringとして扱えるそうです。


参考

: