65,211
社区成员
发帖
与我相关
我的任务
分享#define U16_FWD_N(s, i, length, n) { \
int32_t __N=(n); \
while(__N>0 && (i)<(length)) { \
U16_FWD_1(s, i, length); \
--__N; \
} \
}
#define UTF_FWD_N(s, i, length, n) U16_FWD_N(s, i, length, n)
int32_t
UnicodeString::moveIndex32(int32_t index, int32_t delta) const {
// pin index
int32_t len = length();
if(index<0) {
index=0;
} else if(index>len) {
index=len;
}
const UChar *array = getArrayStart();
if(delta>0) {
UTF_FWD_N(array, index, len, delta);
} else {
UTF_BACK_N(array, 0, index, -delta);
}
return index;
}