在 vc++ 中将字符串转换为双精度
Posted
技术标签:
【中文标题】在 vc++ 中将字符串转换为双精度【英文标题】:converting String to double in vc++ 【发布时间】:2011-06-25 04:42:28 【问题描述】:谁能帮助我在 vc++ 中将 String 转换为 double 的方法?
我不能使用atoi
,因为它将char 转换为double。但我使用的是istringstream
。
std::istringstream stm;
double d;
String name = "32.67";
stm.str(name);
stm >>d;
会报编译错误:
错误 C2664:'void std::basic_istringstream::str(const std::basic_string &)': 无法将参数 1 从 'System::String ^' 转换为 'const std::basic_string &'请提供不同的解决方案或更正此问题。
【问题讨论】:
std::string to float or double 的可能重复项 请搜索网站 - 这个问题已经被问过很多次了。 【参考方案1】:std::stringstream str() 接受 std::string 作为参数。无论它来自何处,您都将传递给它一个 System::String。鉴于时髦的 ^ 符号,您必须使用 C++/CLI,使用 .NET 字符串。
除非出于某种原因需要使用 .NET 库,否则请使用 std::string,在这种情况下,您需要使用 .NET 转换函数,或转换为 std::string(或 char* c-string并使用
【讨论】:
【参考方案2】:正如其他响应者的建议,您可能正在使用 C++/CLI。在这种情况下:
String ^ name = "32.67";
double d;
d = Double::Parse(name);
注意,如果字符串不能解析成双精度,则会抛出异常。如果您想避免这种情况,请使用Double::TryParse
(如果无法解析字符串,则返回 false)。
【讨论】:
【参考方案3】:我觉得用vc++/CLR编程很简单。
String ^name = "32.56";
String ^no = "56";
Double number_double = Convert::ToDouble(name); // convert String to double
Int number_int = Convert::ToInt32(no); // convert String to integer
【讨论】:
以上是关于在 vc++ 中将字符串转换为双精度的主要内容,如果未能解决你的问题,请参考以下文章