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