摘要: vc 2005 sp1下isspace函數的debug版本對中文處理有問題
今天碰到一個怪問題,從別人那兒拿來的一段代碼先在gcc下過了,又移植到vc下編譯,結果debug時老是有assert錯誤??戳艘幌麓a,錯誤發生在一個trim函數中。trim函數接受一個char*類型的字符串參數,去掉字符串前后的空格、制表符等空白字符。其中判斷是否是空白字符用的是 isspace函數。按照一般的想法,char*字符串里的字符編碼無論是GBK還是utf-8,因為都兼容ASCII,所以isspace函數都不應該發生問題。但事實是只要是字符串有中文,無論是gbk還是utf-8編碼,isspace內都有assert錯誤。為了便于說明,把其中的代碼抽像出來如下:
閱讀全文