嗨 我使用以下方法來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