concatenar dos valores enteros en una matriz de caracteres

Estoy tratando de extraer dos valores (int32_t) y colocarlos dentro de una matriz de caracteres.

int32_t version = getVersion();

if (version < 0)
{
    return;
}
else
{
    //first part of number needs to be shifted right
    int32_t major = (((version) >>16) & 0xFFFF);
    int32_t minor = ((version) & 0xFFFF);

    // need to concatenate these two values, and place a "." between them

    setVersion(...);//requires a char array, should for example be "1.1"
}

¿alguien puede darme algún consejo sobre la mejor manera de hacer esto? sin el uso de std::strings por favor. Preferiría una matriz de caracteres.

Gracias por adelantado

preguntado el 30 de junio de 12 a las 15:06

Muestre la entrada y la salida esperadas. -

2 Respuestas

Puedes emplear strstream

char v[255] = {};
{
  std::strstream vs(v, 254);
  vs << major << '.' << minor;
}
setVersion(v);

Respondido el 30 de junio de 12 a las 15:06

Aquí tienes otra forma de hacerlo.

snprintf(charArray, sizeof(charArray), "%d.%d", major, minor);

// Please check the correctness for format specifier and verify the return 
// value too.

Si está en la plataforma Windows, use _snprintf_s.

Respondido el 30 de junio de 12 a las 15:06

eso se ve bien, ¿qué tamaño necesitaría para hacer la matriz de caracteres? como estoy extrayendo estos dos valores, más el "."? - user1381456

Como en la respuesta de Johannes, debe tener un tamaño predeterminado con cero inicializado. Puede contar el número de dígitos en mayor, menor usando alguna lógica y establecer dinámicamente el tamaño de charArray teniendo en cuenta el tamaño de mayor+punto+menor+nulo. Pero eso depende de usted en cuanto a qué forma de implementar. - Mahesh

Consideraría este buen consejo para C. Pero para C ++, el peligro de tipos incorrectos (y no hay necesidad de velocidad) descarta esto como un uso válido. - martín york

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.