Я недавно писал некоторые основные программы командной строки (я хочу, чтобы мои навыки были острыми в течение лета), но printf
и scanf
начали меня раздражать. Я не замечательный программист на C, и мне нужно попасть в printf
/scanf
, и их неустойчивости (или, что еще хуже, fgets
и т. Д.) Не совсем устраивает меня в утешительной обстановке (именно по этой причине я люблю NSLog
, с его комфортным пространством имен по умолчанию и его автоматическим анализом NSString
и NSObject
).Методы замены печати/сканирования: требуется некоторая обратная связь/рекомендации
К большому разочарованию, однако, NSLog не имеет функции-контрагента и печатает много лишнего «мусора» (время, имя функции и т. Д. Вместе с новой строкой в конце), которая побеждает много цели в моем использовании. Поэтому я решил сесть за другое упражнение по программированию и написать функции для замены printf и scanf, которые отвечали бы моим потребностям.
И voila, я придумал свой собственный файл NSInput.h
, содержащий две функции: NSPrint()
и NSScan()
. Эти две функции сильно моделируются после printf и scanf, но также обрабатывают NSString
. Я знаю, что нахожусь здесь на священном пространстве имен, но я не мог удержаться (IFPrint
и IFScan
просто звучит ужасно!).
Теперь, когда я действительно счастлив, что рабочий код (для которого вы можете найти источник here), я знаю, что это не эффективно (к моему удивлению, хотя, NSPrint
в несколько раз эффективнее, чем printf
под LLDB в Xcode 4, но это не относится к делу). Мне нужен совет о том, как сделать функции лучше и эффективнее. NSScan
, например, преобразует va_list
, он получает в NSPointerArray
и использует NSScanner
для сканирования формата и ввода строк, поэтому я знаю, что есть много возможностей для улучшения.
В принципе, Я хочу знать, есть ли какие-либо вопиющие ошибки, которые я сделал, которые могут и должны быть исправлены? Есть что-то огромное, что я пропустил? Должен ли я просто называться испорченным и вернуться к использованию printf
и scanf
? Пожалуйста, скажите мне, я ищу здесь вход (каламбур не предназначен!) ...
Заранее благодарен!
Что вы ищете в функции, подобной printf, которую вы не можете получить с помощью [NSString stringWithFormat:]? –
Одно явное упущение, которое я заметил, - отсутствие тестового набора. –
@Seamus: если вы посмотрите на источник, это именно то, что я делаю. @Greg: Я на самом деле никогда не делал тестовых наборов раньше, так что, думаю, сейчас самое подходящее время попробовать, верно? Спасибо за ответы! –