在Wince中由於使用的unicode的字符,所以會引起很多的問題。對於從字符串轉換成數的一系列函數,atoi,atol,atof等,唯獨atof沒有TCHAR版本的,近日,在編程中遇到一個需要轉換的地方,但總的不到正確的結果,想來想去,試來試去最終才解決了這個看起來不大的問題,如果你也碰到這種問題,希望能對你有所幫助。
簡單的說就是atoi接收的char*類型的參數,WINCE下如果TCHAR*強制類型轉換,雖然能夠執行程序,但是卻得不到正確結果,比如"123"傳入後得到的就是"1",我試過建立一個char數組,然後用sprintf進行轉換,結果也不行。最後只得老老實實的寫了一個函數來進行轉換。具體實現中,我沒有用TCHAR類型,而用的CString
char* StrToChar(CString cs)
{
static char pStr[1024];
int i=0;
for(i=0;i<1023&&i<cs.GetLength();i++)
*(pStr+i) = cs.GetAt(i);
*(pStr+i+1) = '/0';
return pStr;
}
把要轉換成數的CString變量使用該函數進行類型轉換得到char類型指針再傳入atof函數,就可以得到正確的結果了。