С ++ трубы в Objective-C - PullRequest
       7

С ++ трубы в Objective-C

0 голосов
/ 18 сентября 2010

Некоторое время назад я перешел с C ++ на target-C, и теперь я нахожу NSLog () утомительным.Вместо этого, все еще в Objective-C, я хотел бы иметь возможность написать что-то вроде stdout << "Ответ" << 42 << "\ n";(Я знаю, что NSLog печатает в stderr, я мог бы смириться с написанием stderr << "Hello world";) </p>

По сути, я просто хочу иметь возможность использовать синтаксис канала C ++ в Objective-C.

Меня не волнует скорость (в пределах разумного) или если единственный метод использует макросы прекомпилятора или другие хакерские вещи.

Ответы [ 2 ]

3 голосов
/ 18 сентября 2010

Вы действительно должны привыкнуть к форматированию строк, как в NSLog.Синтаксис в стиле C ++ может быть простым для написания, но поддерживать его - кошмар.Подумайте об интернационализации.Строка формата может быть легко загружена во время выполнения.Какао обеспечивает функцию NSLocalizedString для этого.Но для потоковых операторов C ++ вам, вероятно, придется писать разные коды для каждого языка.

0 голосов
/ 18 сентября 2010

То, что вы хотите, это потоковые операции.

Нет действительно «хорошего» способа сделать это в Какао, у меня есть библиотека, которую я никогда не использовал, которая позволила бы вам сделать что-то «рядом», но все равно не получило бы много преимущества.

http://github.com/jweinberg/Objective-Curry/blob/master/OCFileStream.m

Начиная с этого момента вы сможете написать класс, который сделал

[[[stdOutStream write:@"10"] write:[bleh description]] write:@"more stuff"];

...