2011-04-26 64 views
5

如何将CString变量转换为浮点数?我试图使用编辑框来返回一个值,我把它放入浮点数组。我使用GetWindowText方法获取返回CString的值。所以我需要转换为浮点。 (或者我只是完全错误地做事情?)。将CString转换为mfc中的浮点数

我假定存在用于在MFC已经这样做的方法。(已经使用了格式方法convet到一个CString在编辑框中的阵列中显示的值)

感谢。

回答

7

你可以做

CString pi = "3.14"; 
    return atof(pi); 

编辑

还可以使用此功能:

CString pi = "3.14"; 
    return _ttof(pi); 

读一个字符串值和解析/将其转换为浮动可以让你找到有一个时出错。所有你需要的是C运行时函数的帮助:strtod()或atof()。

我宁愿strtod转换为第二个参数返回一个字符串指针,其中解析终止:

CString str; 
m_edtMyEditBox.GetWindowText(str); 
char *pEnd; 
double dValue = strtod(str.GetBuffer(str.GetLength()), &pEnd); 
if (*pEnd != '\0') 
{ 
    // Error in parsing 
} 
str.ReleaseBuffer(); 
+1

我觉得应该是'CString的PI = _T(“3.14”);'如果他要使用_ttof() – MikMik 2011-04-26 10:56:19

+0

@MikMik:如果应用程序支持unicode字符,那么你应该使用_T()宏,否则不需要该宏。 – karthik 2011-04-26 11:42:10

+5

首先,这是2011年。应用程序应该支持Unicode。其次,如果应用程序支持Unicode,则应使用L“String”和_wtof。如果没有,“弦乐”和atof。 _T(“String”)和_ttof是根据项目设置映射到正确版本的通用版本。但是混合“String”和_ttof是将ANSI文字与一个泛型函数混合在一起,这个泛型函数意外地在非unicode版本中工作,但是是错误的。 – MikMik 2011-04-28 06:09:17