任何人都可以帮我解决在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 &'
请帮助解决不同的问题或纠正此问题。
答案 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