我有一個帶有UTF8數據的緩衝區。我需要刪除前導和尾隨空格。 這裏是C代碼做它(到位)爲ASCII緩衝區: 修剪UTF8緩衝區
char *trim(char *s)
{
while(isspace(*s))
memmove(s, s+1, strlen(s));
while(*s && isspace(s[strlen(s)-1]))
s[strlen(s)-1] = 0;
return s;
}
如何做UTF8緩衝同在C/C++?
P.S. 感謝您對strlen()的性能提示。具體回到UTF8:如果我需要一起刪除所有空間,不僅在開始和尾部,會怎麼樣?此外,我可能需要刪除所有字符與ASCII碼< 32.這裏有任何具體的UTF8的情況下,就像使用mbstowcs()?
注意到O(n^2) – 2011-05-24 02:40:56
除了多次調用'strlen'之外,更不用說移動整個字符串(前面的空格數量)時間 – Bwmat 2011-05-24 02:41:20
,所有對'memmove'的調用也沒有多大幫助。 – Marlon 2011-05-24 02:41:50