EVC4中字符串轉換成float類型數時出錯!?

在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函數,就可以得到正確的結果了。

發佈了29 篇原創文章 · 獲贊 28 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章