преобразование String для удвоения в vc ++ - PullRequest
1 голос
/ 25 июня 2011

Может кто-нибудь помочь мне с способом преобразования String для удвоения в vc ++?

Я не могу использовать atoi, поскольку он преобразует char в удвоение.Но я использую 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 ]

4 голосов
/ 25 июня 2011

std :: stringstream str () принимает std :: string в качестве аргумента.Вы передаете ему System :: String, откуда бы он ни исходил.Учитывая символ ^ в стиле фанк, вы должны использовать C ++ / CLI, использовать строки .NET.

Используйте std :: string, если по какой-то причине вам не нужно использовать библиотеку .NET, и в этом случае вам нужно либоиспользуйте функции преобразования .NET или преобразуйте в std :: string (или char * c-string и используйте оператор <<). </p>

1 голос
/ 27 июня 2011

Я думаю, что это очень просто в программировании на 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
1 голос
/ 25 июня 2011

Поскольку у другого респондента есть предположение, вы, вероятно, используете C ++ / CLI.В этом случае:

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

Обратите внимание, что если строка не может быть проанализирована в double, будет выдано исключение.Используйте Double::TryParse, если вы хотите избежать этого (он возвращает false, если строка не может быть проанализирована).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...