En C# la palabra clave as
convierte un valor en otro tipo. Hay un código que admite esta conversión (probablemente en el tiempo de ejecución de C#). Esto no es un elenco.
En general, no se puede usar dynamic_cast
o cualquier otro tipo de molde en C++ para lograr esto, porque los moldes y las conversiones no son lo mismo. Digo 'en su mayor parte' porque algunos tipos pueden ser convertidos usando static_cast
, para convertir un int
en un pero esto sigue siendo una conversión, no un reparto. Además, si ha introducido un sistema de tipo donde todo se deriva de una clase base Object
que tiene esta funcionalidad de conversión, es posible que pueda construir un mecanismo para admitir esta conversión usando dynamic_cast
, pero habría tenido que escribir este mecanismo y esto no parece ser lo que intentas hacer.
No hay nada incorporado en C++ que hará esta conversión por usted; en otras palabras, no hay C++ equivalente a la palabra clave C# as
.
Si desea realizar esta conversión, a menudo se puede utilizar corrientes:
#include <sstream>
#include <string>
#include <iostream>
using namespace std;
int main()
{
float f = 42.0f;
stringstream ss;
ss << f;
string s = ss.str();
cout << "Float: " << f << ", String '" << s << "'";
return 0;
}
<sstream>
es parte del estándar de C++, por lo que en este sentido debería tenerla en cuenta para estar 'en el idioma'.
Usar flujos para hacer esta conversión puede ser bastante torpe. Boost offerslexical_cast
que puede ser utilizado para realizar estas conversiones sencillas con menos código:
#include <sstream>
#include <iostream>
#include <boost\lexical_cast.hpp>
using namespace std;
int main()
{
string s = "42";
float f = boost::lexical_cast<float>(s);
cout << "Float: " << f << ", String '" << s << "'";
return 0;
}
Ninguna de las respuestas que sugieren el uso de 'dynamic_cast' son correctas. La palabra clave C# es una operación de conversión, pero 'dynamic_cast' es un elenco. –
@Jon Dibling - 'como' es un elenco. solo tiene éxito si el elenco es válido. – sylvanaar
@sylvanaar: de acuerdo con la especificación de C#, tanto el operador de conversión como la palabra clave 'as' realizan conversiones. Ver 7.9.11 y 7.6.6 –