2011-06-25 11 views
1

誰でもvC++でStringをdoubleに変換する方法を教えてもらえますか?vC++で文字列を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

[STD :: floatへの文字列またはダブル](http://stackoverflow.com/questions/1012571/stdstring-to-float-or-double) –

+0

の可能性のある重複したサイトを検索してください - この質問を以前何度も尋ねられています。 –

答えて

4

std :: stringstream str()は、引数としてstd :: stringを受け入れます。どこから来てもSystem :: Stringを渡しています。ファンキーな^記号が付いている場合は、.NETの文字列を使用してC++/CLIを使用している必要があります。

何らかの理由で.NETライブラリを使用する必要がある場合を除き、std :: stringを使用します。この場合、.NET変換関数を使用するか、std :: string(またはchar * c-オペレーター)< <演算子を使用してください。

1

他のレスポンダには、C++/CLIを使用している可能性があります。その場合:

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

文字列を2重に解析できない場合、例外がスローされます。これを避けるには、Double::TryParseを使用します(文字列を解析できない場合はfalseを返します)。

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 
関連する問題