将字符串从组合框转换为双精度
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()
中收到错误,即不存在从CString
到const 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);
【讨论】:
以上是关于将字符串从组合框转换为双精度的主要内容,如果未能解决你的问题,请参考以下文章