Ответ 1
Использовать cStringUsingEncoding из класса NSString:
NSString *myString = @"Hello";
const char *cString = [myString cStringUsingEncoding:NSASCIIStringEncoding];
Я пытаюсь преобразовать nsstring в const char *.
1- я добавляю nsstring и целое число вместе
2- то я конвертирую эту новую nsstring в const char *
3- у меня есть объект, и я отношу эту новую nsstring как имя моего объекта.
4- я использую этот объект в другой функции
NSString * firstName = [NSString stringWithFormat: @ "Имя% d", 1];
const char * secondName = [firstName cString];
myobject- > SetName (secondName);
проблема: A
1- secondName имеет значение null, когда я использую свой объект в своей функции.
2-, но если я заменил firstName на: firstName = "Name1";
3- он работает
проблема B
1- если я заменил const char * secondName = [firstName cString];
by const char * secondName = [macString UTF8String];
2- даже если у меня есть firstName = "Name1";
3- это не работает!
любая идея?
Благодарю вас
: =)
Использовать cStringUsingEncoding из класса NSString:
NSString *myString = @"Hello";
const char *cString = [myString cStringUsingEncoding:NSASCIIStringEncoding];
const char * являются постоянными, их нельзя назначить в любом случае!
Попробуйте передать (const char*)[firstName UTF8String
] в свой метод
NSString* firstName = [NSString stringWithFormat: @"Name%d", 1];
const char* secondName = [firstName UTF8String];
UTF8String returns a const char: - (const char *)UTF8String
Используйте этот метод:
char* MakeStringCopy (const char* string)
{
if (string == NULL)
return NULL;
char* res = (char*)malloc(strlen(string) + 1);
strcpy(res, string);
return res;
}
NSString *filePath = @"~/Documents/Image.png";
MakeStringCopy([filePath UTF8String]);