前段時間我從C++轉換到了Objective-C,現在我發現NSLog()很麻煩。相反,仍然在Objective-C中,我希望能夠寫出如 標準輸出< <「答案是」< <「\ n」; (我知道的NSLog打印到標準錯誤,我可以容忍的寫作標準錯誤< <的「Hello world」)C++管道Objective-C
基本上,我只是想能夠使用C++語法管在Objective-C。
我不關心速度(在合理範圍內),或者如果唯一的方法使用預編譯器宏或其他黑客事情。
前段時間我從C++轉換到了Objective-C,現在我發現NSLog()很麻煩。相反,仍然在Objective-C中,我希望能夠寫出如 標準輸出< <「答案是」< <「\ n」; (我知道的NSLog打印到標準錯誤,我可以容忍的寫作標準錯誤< <的「Hello world」)C++管道Objective-C
基本上,我只是想能夠使用C++語法管在Objective-C。
我不關心速度(在合理範圍內),或者如果唯一的方法使用預編譯器宏或其他黑客事情。
你真的應該習慣的格式字符串作爲NSLog
。 C++風格的語法可能很容易編寫,但這是一個噩夢來維護。考慮國際化。格式字符串可以在運行時輕鬆加載。可可爲此提供了功能NSLocalizedString
。但對於C++的流操作符,您可能必須爲每種語言編寫不同的代碼。
你想要的是流操作。
Cocoa沒有一個真正的'好'的方法來做到這一點,我有一個我從未真正充實過的圖書館,它可以讓你做一些'接近'的事情,但仍然不會很多的好處。
http://github.com/jweinberg/Objective-Curry/blob/master/OCFileStream.m
從那裏開始,你就可以寫一個類,確實
[[[stdOutStream write:@"10"] write:[bleh description]] write:@"more stuff"];
我真正想要做的是能寫stdOutStream << @「10」<< [bleh description] << @「更多東西」; – 2010-09-18 00:23:55
正確....你不能。 – 2010-09-18 16:00:29