嗨 我使用以下方法来std::string
转换成的NSString,但它返回(空),同时试图显示的NSString转换的std :: string到的NSString问题
我需要它返回的,而不是值(NULL )在转换时间清空任何建议
StudyDate=[NSString stringWithCString:studyDate length:strlen(studyDate)];
任何建议,以避免空值
问候
嗨 我使用以下方法来std::string
转换成的NSString,但它返回(空),同时试图显示的NSString转换的std :: string到的NSString问题
我需要它返回的,而不是值(NULL )在转换时间清空任何建议
StudyDate=[NSString stringWithCString:studyDate length:strlen(studyDate)];
任何建议,以避免空值
问候
编辑:使用语法@"string"
只有用于构建NSString。使用std::string
您应该使用标准"string"
语法。
NSString* aConstantNSString = @"foo";
const char* aConstantCString = "foo";
std::string aConstantStdString = "foo";
CFStringRef aConstantCFString = CFSTR("foo");
+stringWithCString:length:
has been deprecated自iPhone SDK的早期开始。如果字符串只包含ASCII字符,通常可以使用use +stringWithUTF8String:
instead。
只有当studyDate
是C字符串(即const char*
)时,您的方法才有效,但您说有std::string
。没有方法可以将std::string
直接转换为NSString。您必须使用.c_str()
创建C字符串第一:
StudyDate = [NSString stringWithUTF8String:studyDate.c_str()];
(但上面不应该是你得到(null)
因为通过事业std::string
到+stringWithCString:length:
甚至strlen
应立即给予编译时错误。
'error: cannot convert ‘std::string’ to ‘const char*’ in argument passing'
所以studyDate
应该已经是一个const char*
。我们需要更多的上下文(代码),看看发生了什么事情。)
NSString objCString = @"this is my objective c string";
std::string cppString; // this is your c++ string or however you declared it blah blah blah
cppString = [objCString UTF8String];
// this is the conversion of an NSString into a c++ string
// not sure if it will work for c strings but you can certainly try
这就是所有有太多的恐惧。所有你需要的只是一行代码。这是在iOS 4.3 SDK中完成的,所以我不确定编码是否会改变,如果你在其他地方添加它。
你已经表明了他所要求的相反。他要求将std :: string转换为NSString,而不是将NSString转换为std :: string。 – Volomike 2016-02-03 19:57:40
顺便说一句,它不是一个好主意,让变量只有他们的情况('StudyDate'与'studyDate')不同。 – DarkDust 2011-03-28 08:27:27