簡短的寫法是丟給String8再取出來 String16 str("string16 for printing"); LOGE( "I print a string16 '%s' ", String8(str).string()); 成員函數string()會將它內部的 char8_t* b uffer位址回傳給你,LOGE就可以印出來 這個string()回傳的位址不是永久的,所以請不要保存這個位址 要注意因為是透過String8做轉換媒介,所以String8的life scope就很重要! 舉例來說, 像下面這樣的程式碼,雖然只是個印字串4次跟另一個字串1次, 但是runtime時就會看到String16轉出來跑的字串有亂碼/其他字出現。 String16 str1("string16 for printing"); char* str = String8(str).string(); LOGE( "I print a string16 '%s' first time", str); LOGE( "I print a string16 '%s' second time", str); String8* str2 = new String8("new string8 for print"); LOGE( "I print a string16 '%s' third time", str); LOGE( "I print a string16 '%s' forth time", str); LOGE( "I print a string8 '%s'", test->string()); delete str2; 這原因是String8字串的scope其實只有第二行,之後就會被解構。 那一行之後能夠運作是因為OS並不會對於是放掉的空間做清理,所以資料還殘留在記憶體上, 雖然有可能可以印的出內容,但是內容是甚麼就無...