我有以下函數返回剝離從字符串中的空格,C/C++ isspace()所能跳過多字節字符串字符
char *rtrim(char *l_ptr)
{
char *lptr = l_ptr + strlen(l_ptr) - 1;
for (; lptr != l_ptr && isspace((int)*lptr); lptr--)
;
*lptr = '\0';
return lptr;
}
char *ltrim(char *l_ptr)
{
char *lptr;
for (lptr = l_ptr; *lptr != '\0' && isspace((int)*lptr); lptr++)
;
return lptr;
}
char *trim(char *l_ptr) {
return rtrim(ltrim(l_ptr));
}
的問題是它的修整字符以下 -
去除導致從空格「
Ć"
除去前導空格,得到的 「」
的字符是0xc6,之前有幾個空格。我已經檢查了包含setlocale(LC_ALL,「」);的代碼。 LANG設置爲pl_PL.isoo88592。任何幫助非常感謝。
謝謝。
什麼字符編碼您使用的? –
@JohnZwinck從他的LANG設置中,我猜測ISO 8859-2(Latin-2,東歐)。 –
注意:'char * lptr = l_ptr + strlen(l_ptr) - 1;'如果'l_ptr'爲'「」'則爲UB。 (也可能是一個_long_循環。) – chux