Какой самый безопасный способ для NSString слабо содержать const char *, принадлежащий std :: string? Оба приведенных ниже примера работают над простым тестом, в журналах и в виде, представленном в NSTableView, но меня беспокоит странное поведение в будущем. Это может быть дополнительный нулевой символ c_str () просто игнорируется (из-за переданного параметра длины), и любой из них будет работать нормально.
Дано:
std::string const * stdstring = new std::string("Let's see if this works");
Тогда:
NSString * aStr = [[NSString alloc] initWithBytesNoCopy:
stdstring->data() length: stdstring->length()
encoding:NSUTF8StringEncoding freeWhenDone:NO];
или
NSString * aStr2 = [[NSString alloc] initWithBytesNoCopy:
stdstring->c_str() length: stdstring->length()
encoding:NSUTF8StringEncoding freeWhenDone:NO];
или что-то еще?