Я хочу использовать sprintf для извлечения строки из NSString вместо использования UTF8String? - PullRequest
0 голосов
/ 12 июля 2011

Я хочу использовать sprintf для извлечения строки из NSString вместо использования UTF8String?Я знаю, что это работает:

NSString *nsSDummy = [[NSString alloc] initWithObjects: @"red"];
char *strDummy;

strDummy = [nsSDummy UTF8String];

Но хочу сделать следующее:

NSString *nsSDummy = [[NSString alloc] initWithObjects: @"red"];
char *strDummy;

sprintf(strDummy, "%@", nsSDummy); <<--Unknown conversion type character "@" in format

спасибо

Ответы [ 3 ]

4 голосов
/ 12 июля 2011

не может быть сделано таким образом, поскольку sprintf ничего не знает о типах данных Cocoa.

Вы можете использовать NSString stringWithFormat или NSMutableString appendFormat: метод затем используйте эту созданную строку для создания cString, т.е.

NSString *nsSDummy = @"red";
NSString *derivedString = [NSString stringWithFormat: "%@",nsSDummy];
char *strDummy = [derivedString UTF8String];
2 голосов
/ 12 июля 2011

Вы не можете.

В случае, если вы разместили сообщение, нет смысла использовать sprintf. Просто используйте UTF8String и покончите с этим. В более сложном случае используйте метод NSString stringWithFormat:, а затем используйте UTF8String в результирующей строке NSString.

Я надеюсь, что это всего лишь результат обрезки поста, но вы используете sprintf совершенно неправильно (вы передаете ему неинициализированный указатель) и в результате вы получите крах или что-то еще хуже. И вам все равно стоит использовать snprintf или asprintf вместо этого.

0 голосов
/ 13 апреля 2013

Вы должны выделить strDummy или сделать так

int len = 10;
char[len] _strDummy;
char *strDummy = &_strDummy;
//...and continue your code

Хорошо выглядишь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...