2009-05-27 123 views
12

如何在C++中将CString转换为double如何将CString转换为C++中的double?

Unicode支持也不错。

谢谢!

+0

我真的不能相信这个问题还没有被问到......但搜索没有透露。如果它是重复的,请温和:) – 2009-05-27 16:43:42

+4

无法在这里找到答案,但使用谷歌搜索“cstring加倍”可以让您在第一次击中时获得正确答案。 – 2009-05-27 16:52:03

+0

@AndrewBainbridge确实如此,如果通过“正确的答案”,你的意思是这个页面在这里:) – aquirdturtle 2016-07-17 20:05:59

回答

25

CString可以转换为LPCTSTR,这基本上是一个const char*(以Unicode const wchar_t*构建)。

知道了这一点,你可以用atof()

CString thestring("13.37"); 
double d = atof(thestring). 

...或Unicode版本,_wtof()

CString thestring(L"13.37"); 
double d = _wtof(thestring). 

...或同时支持Unicode和非Unicode版本。 ...

CString thestring(_T("13.37")); 
double d = _tstof(thestring). 

_tstof()是一个扩展到atof()_wtof()基于_UNICODE是否被定义)

1

strtod(或wcstod)会将字符串转换为双精度值。

(需要<stdlib.h><wchar.h>

4

与升压lexical_cast的图书馆,你做

#include <boost/lexical_cast.hpp> 
using namespace boost; 

... 

double d = lexical_cast<double>(thestring); 
5

您可以使用std::stringstream东西转换成任何东西。唯一的要求是要实施运营商>><<。 Stringstreams可以在<sstream>头文件中找到。

std::stringstream converter; 
converter << myString; 
converter >> myDouble;