¿Cómo puedo convertir un Int a un CString?

2 minutos de lectura

Avatar de usuario de Eslam Hamdy
Eslam Hamdy

Puedo convertir un Double a un CString usando _ecvt

result_str=_ecvt(int,15,&decimal,&sign);

Entonces, ¿existe un método como el anterior que convierte un int a CString?

  • Nota la cstring la etiqueta es para el encabezado estándar de C++ cstringno por lo de las cadenas de Microsoft.

    – Sebastián Mach

    26/09/2012 a las 13:35

  • Tal vez itoa es lo que buscas?

    – Anton Guryanov

    26 de septiembre de 2012 a las 13:57

avatar de usuario de dsgriffin
dsgriffin

Aquí hay una manera:

CString str;
str.Format("%d", 5);

En tu caso, prueba _T("%d") o L"%d" en vez de "%d"

  • No se puede hacer mucho más rápido que eso. Es posible que desee envolver la cuerda con el _T macro para que coincida con el LPCTSTR tipo de parámetro.

    – usuario1201210

    26 de septiembre de 2012 a las 13:15

  • @Eslam ¿Cómo específicamente no funcionó? ¿No compiló? ¿Error de tiempo de ejecución? ¿Resultado incorrecto?

    – usuario1201210

    26 de septiembre de 2012 a las 13:17

  • @Daniel, surge el siguiente error C2664: ‘void ATL::CStringT::Format(const wchar_t *,…)’ : no se puede convertir el parámetro 1 de ‘const char [3]’ a ‘const wchar_t *’

    – Eslam Hamdy

    26 de septiembre de 2012 a las 13:18

  • @Eslam Prueba _T("%d") o L"%d" en vez de "%d".

    – usuario1201210

    26 de septiembre de 2012 a las 13:19


  • ¡No está funcionando para mí! Recibo el error ‘no se puede convertir el argumento 1 de ‘const char [3]’ a ‘const unsigned short *’. Extraño.

    – Acercarse

    18 de marzo de 2022 a las 10:45

Si quieres algo más similar a tu ejemplo, prueba _itot_s. En los compiladores de Microsoft, _itot_s apunta a _itoa_s o _itow_s según la configuración de Unicode:

CString str;
_itot_s( 15, str.GetBufferSetLength( 40 ), 40, 10 );
str.ReleaseBuffer();

debería ser un poco más rápido ya que no necesita analizar un formato de entrada.

template <typename Type>
CString ToCString (Type value)
    {
    return std::to_wstring (value).data ();
    }

int main ()
    {
    const auto msg = ToCString (10);
    std::wcout << msg.GetString () << std::endl;

    return 0;
    }

¿Ha sido útil esta solución?