從CString 到 到數值的轉換小方法 (原創)

 CString 到 float 的轉換 小方法

// 從字符串到浮點數的轉換
float StringtoDouble( CString csValue )

// 第一種方法
 LPTSTR  chValue = csValue.GetBuffer( csValue.GetLength() );
 float fValue = atof( chValue );
 csValue.ReleaseBuffer();

 return fValue; 

// 第二種方法
 // CString csNew = "";
 // int nIndex = csValue.Find( '.' );
 // if( nIndex != -1 )
 // {
 //  csNew = csValue.Left( nIndex + 3);
 // }
 // else
 // {
 //  csNew = csValue;
 // }
 // 
 // char chValue[100];
 // wcstombs( chValue, csNew, 100 );
 //
 // return  (float)atof( chValue );
}

 


不知道這兩種轉換方法是否有問題啊?

最近我寫的函數涉及到字符串和數值轉換的問題時,考慮到方便我都是添加一個系統函數,不知還有沒有更好的解決辦法。如下面的函數就是CString類型轉換爲int類型;轉換成float或者double型都是同理,只是調用不同的轉化函數(wctomb,wcstombs,atof等)。

static void StringToInt(CString csValue, int& nValue)
{
 LPTSTR  chValue = csValue.GetBuffer( csValue.GetLength() );
 nValue = atoi( chValue );
 csValue.ReleaseBuffer();
}

CString使用起來很方便,但是使用過程中也會遇到一些問題。比如使用函數

WINBASEAPI
DWORD
WINAPI
GetPrivateProfileStringA(
    LPCSTR lpAppName,
    LPCSTR lpKeyName,
    LPCSTR lpDefault,
    LPSTR lpReturnedString,
    DWORD nSize,
    LPCSTR lpFileName
    );

先聲明CString csLine = "";

再使用GetBuffer(256)取得一段內存。即csLine.GetBuffer(256)作爲替代lpReturnedString的參數。在後面的操作中使用的時候,需要採用csLine.ReleaseBuffer()才能對該字符串使用諸如Left,Right這樣的字符串操作。

更多 CString 類型轉化的知識 http://www.cnblogs.com/missparad/archive/2005/04/01/129789.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章