我正在爲Ruby編寫一個C擴展,我需要接受一個字符串作爲參數,並迭代字符串中的字符。我的代碼在ASCII字符下工作正常,但它不處理多個字節字符,而是輸出「垃圾」。我找不到任何可以迭代unicode字符串的示例代碼。我會很感激任何指針。在C擴展中的unicode字符串
static VALUE test_method(VALUE self, VALUE text)
{
char *pch;
char *pch_end = RSTRING_END(text);
for (pch = RSTRING_PTR(text); pch < pch_end; pch++)
{
printf("%c\n", *pch);
}
...
}
如果我的字符串是UTF8,那麼我需要檢查每個字符的寬度。有沒有API? – akonsu
所以你的意思是你得到一個指針,你事先不知道哪種字符串是? – Devolus
'wchar_t'具有固定大小(32位?),但UTF8字符串可以具有不同長度的字符(從一個字節到我認爲五個字節)。 – akonsu