Как использовать printf с NSString - PullRequest
59 голосов
/ 26 сентября 2010

Мне нужно использовать что-то вроде NSLog, но без отметки времени и символа новой строки, поэтому я использую printf. Как я могу использовать это с NSString?

Ответы [ 2 ]

100 голосов
/ 26 сентября 2010

Вы можете преобразовать NSString в UTF8 строку, вызвав метод UTF8String:

printf("%s", [string UTF8String]);
0 голосов
/ 19 июня 2018
//public method that accepts a string argument

- (void) sayThis : ( NSString* )  this 
{

    printf("%s",[this cString]);    
}

Согласно NSString.h (версия html) метод UTF8String доступен только в Mac OSX.

(см. Ниже) Все остальные методы, которые я рассмотрел, помечены как «доступность: Openstep»

Существуют и другие методы, которые будут возвращать обычные строки char *, но они могут выдавать исключения преобразования символов.

ПРИМЕЧАНИЕ Указатели строк указывают на память, которая может уйти, поэтому вам нужно скопировать строки, если вы хотите сохранить копию содержимого строки, но немедленная печать должна быть в порядке?

Существуют также методы, которые будут возвращать закодированную строку, и метод для проверки того, будет ли работать нужная кодировка (я думаю), чтобы вы могли проверить, сработает ли требуемая кодировка, а затем запросить строку, которая была закодирована как требуется.

При чтении самого файла .h существует много кодировок и переводов между кодировками. Они управляются с помощью перечислений, поэтому вы можете передать желаемый тип кодировки в качестве аргумента.

В Linux и т. Д. Выполните:

найдите NSString.h ** Обратите внимание, что файл html doc также обнаружен

в противном случае сделайте:

find / usr -name NSString.h

ПРИМЕЧАНИЕ Ваш пробег может отличаться:)

Спасибо.

Из HTML-файла документа NSString.h:

CString - (const char *) cString; Наличие: OpenStep

Возвращает указатель на завершенную нулем строку из 8-битных символов в кодировке по умолчанию. Указанная память не принадлежит вызывающей стороне, поэтому вызывающая сторона должна скопировать ее содержимое, чтобы сохранить ее. Вызывает исключение NSCharacterConversionException, если потеря информации произойдет во время преобразования. (См. -CanBeConvertedToEncoding:.)

cStringLength - (NSUInteger) cStringLength; Наличие: OpenStep

Возвращает длину версии этой строки Unicode, преобразованной в байты с использованием кодировки строки C по умолчанию. Если преобразование приведет к потере информации, результаты непредсказуемы. Проверьте -canBeConvertedToEncoding: сначала.

cStringUsingEncoding: - (const char *) cStringUsingEncoding: (NSStringEncoding) кодирование; Доступность: MacOS-X 10.4.0, Base 1.2.0

Возвращает указатель на завершенную нулем строку символов в указанной кодировке. NB. под GNUstep вы можете использовать это для получения строки utf-16 с нулевым символом в конце (шестнадцати битных символов), а также восьмибитных строк. Указанная память не принадлежит вызывающей стороне, поэтому вызывающая сторона должна скопировать ее содержимое, чтобы сохранить ее. Вызывает исключение NSCharacterConversionException, если во время преобразования произойдет потеря информации.

canBeConvertedToEncoding: - (BOOL) canBeConvertedToEncoding: (NSStringEncoding) кодирование; Наличие: OpenStep

Возвращает, может ли эта строка быть преобразована в заданную строковую кодировку без потери информации.

...