to_string parse not float declared c++ tostring

parse - anulación de String en C++



to_string is not a member of std (4)

Esta pregunta ya tiene una respuesta aquí:

En Java, cuando una clase anula a .toString() y usted hace System.out.println() lo usará.

class MyObj { public String toString() { return "Hi"; } } ... x = new MyObj(); System.out.println(x); // prints Hi

¿Cómo puedo lograr eso en C ++, por lo que:

Object x = new Object(); std::cout << *x << endl;

¿Producirá alguna representación significativa de cadenas que elegí para Object ?


Alternativa a la solución de Erik puede anular el operador de conversión de cadena.

class MyObj { public: operator std::string() const { return "Hi"; } }

Con este enfoque, puede usar sus objetos siempre que se necesite una salida de cadena. No estás restringido a las transmisiones.

Sin embargo, este tipo de operadores de conversión pueden generar conversiones involuntarias y errores difíciles de rastrear. Recomiendo usar esto solo con clases que tengan semántica de texto, como una Path , un nombre de SerialCode y un SerialCode .


Aunque la anulación de operador es una buena solución, me siento cómodo con algo más simple como el siguiente (que también parece ser más probable que sea Java):

char* MyClass::toString() { char* s = new char[MAX_STR_LEN]; sprintf_s(s, MAX_STR_LEN, "Value of var1=%d /nValue of var2=%d/n", var1, var2); return s; }


class MyClass { friend std::ostream & operator<<(std::ostream & _stream, MyClass const & mc) { _stream << mc.m_sample_ivar << '' '' << mc.m_sample_fvar << std::endl; } int m_sample_ivar; float m_sample_fvar; };


std::ostream & operator<<(std::ostream & Str, Object const & v) { // print something from v to str, e.g: Str << v.getX(); return Str; }

Si escribe esto en un archivo de encabezado, recuerde marcar la función en línea: inline std::ostream & operator<<(... (Consulte las preguntas más frecuentes en C ++ para conocer los motivos ).