在vc ++中将String转换为double

时间:2011-06-25 04:42:29

标签: visual-c++ types

任何人都可以帮我解决在vc ++中将String转换为double的问题吗?

我无法使用atoi,因为它将char转换为double。但我正在使用istringstream

std::istringstream stm; 

double d;
String name = "32.67";

stm.str(name);
stm >>d; 

它会产生编译错误:

error C2664: 'void std::basic_istringstream::str(const std::basic_string &)' :
cannot convert parameter 1 from 'System::String ^' to 'const std::basic_string &'

请帮助解决不同的问题或纠正此问题。

3 个答案:

答案 0 :(得分:4)

std :: stringstream str()接受std :: string作为参数。你传递的是System :: String,无论它来自哪里。鉴于时髦的^符号,您必须使用C ++ / CLI,使用.NET字符串。

使用std :: string除非出于某种原因需要使用.NET库,在这种情况下,您需要使用.NET转换函数,或转换为std :: string(或char * c-string)并使用<< operator}。

答案 1 :(得分:1)

正如其他响应者提出的建议,您可能正在使用C ++ / CLI。在那种情况下:

 String ^ name = "32.67";
 double d;
 d = Double::Parse(name);

请注意,如果无法将字符串解析为double,则会抛出异常。如果要避免,请使用Double::TryParse(如果无法解析字符串,则返回false)。

答案 2 :(得分:1)

我认为在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