在 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++ 中将字符串转换为双精度的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中将字符串转换为双精度

在 C++ 中将字符串转换为双精度

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

尝试在 C++ 中将字符串转换为双精度时遇到分段错误

如何在 C++ 中将字符串转换为双精度值?

在java中将十六进制数字字符串转换为双精度数字