将字符串从组合框转换为双精度

Posted

技术标签:

【中文标题】将字符串从组合框转换为双精度【英文标题】:convert the string from combobox to double 【发布时间】:2012-11-22 11:37:34 【问题描述】:

我正在尝试执行以下操作:

CCombobox m_obs;
CString temp;

m_obs.GetWindowTextA(temp);
double newObs = strtod(temp, NULL);

但是,我在strtod() 中收到错误,即不存在从CStringconst char * 的合适转换函数。

如何?

【问题讨论】:

这应该可以工作,除非您在项目中启用了 UNICODE,在这种情况下,您需要先将字符串转换为 ANSI @aleguna 听起来像是一个答案。 非常感谢您的回答。我的项目是 UNICODE。我将其更改为未设置和多字节字符集,但随后出现构建错误LNK1561: entry point must be defined @chintans:对于多字节字符集,您必须有一个 wmain 而不是 main 【参考方案1】:

尝试改为CStringA,强制使用 Ansi 版本,否则 CString 取决于编译器开关,其中 UNICODE 为默认值。

【讨论】:

【参考方案2】:

strtod() 期望 const char * str 用于第一个参数。 你应该这样做:

const char* cstr = (LPCTSTR)temp;
double newObs = strtod(cstr, NULL);

【讨论】:

CString 有一个隐式转换运算符到 LPCTSTR 编译器没有选择它的事实意味着 OP 的项目启用了 UNICODE 并且 LPCTSTR 是一个宽字符字符串。这意味着const char* cstr = (LPCTSTR)temp; 也不起作用 非常感谢您的回答。我的项目是 UNICODE。我将其更改为未设置和多字节字符集,但随后出现构建错误 LNK1561:必须定义入口点。【参考方案3】:

感谢您的回复。

对于 UNICODE 项目,请执行以下操作:

double NewObs = wcstod(temp, NULL);

【讨论】:

以上是关于将字符串从组合框转换为双精度的主要内容,如果未能解决你的问题,请参考以下文章

将字符串从.csv文件转换为双精度数

将列的数据类型从字符串转换为双精度

使用 '%' 将字符串转换为双精度

将字符串转换为双精度 [重复]

将字符串转换为双精度的最佳方法

如何使用 stringstream 在 C++ 中将字符串转换为双精度值 [关闭]