Quiero truncar una cadena en una cout,

string word = "Very long word";
int i = 1;
cout << word << " " << i;

Quiero tener como salida de la cadena de un máximo de 8 letras

así que en mi caso, quiero tener

Very lon 1

lugar de :

Very long word 1

No quiero usar el comando wget(8) de la función, ya que no truncar mi palabra para el tamaño que yo quiero por desgracia. Yo también no quieren la ‘palabra’ de la cadena para cambiar su valor ( sólo quiero mostrar al usuario una parte de la palabra, pero mantenerlo lleno en mi variable)

Gracias de antemano

EDIT : Alguien envió la solución, a mí me funcionó y ahora no puede marcar su respuesta como buena, ya que elimina su respuesta después de conseguir votada abajo. Era tan simple como el uso de la palabra.substr(0, 8) método. ¿Hay alguna razón por la que él estaba recibiendo votada abajo? Este método es malo usar?

  • El… wget función?
  • Creo que te refieres a setw() no wget() …?

1 Comentario

  1. 1

    Sé que usted ya tiene una solución, pero yo pensaba que esto era digno de mencionar: Sí, usted puede simplemente utilizar string::substr, pero es una práctica común el uso de los puntos suspensivos para indicar que una cadena se ha truncado.

    Si que es algo que se quería incorporar, sólo podía hacer una simple función truncar.

    #include <iostream>
    #include <string>
    
    std::string truncate(std::string str, size_t width, bool show_ellipsis=true)
    {
        if (str.length() > width)
            if (show_ellipsis)
                return str.substr(0, width) + "...";
            else
                return str.substr(0, width);
        return str;
    }
    
    int main()
    {
        std::string str = "Very long string";
        int i = 1;
        std::cout << truncate(str, 8) << "\t" << i << std::endl;
        std::cout << truncate(str, 8, false) << "\t" << i << std::endl;
        return 0;
    }

    La salida sería:

    Very lon...   1
    Very lon      1
    • Creo que debería haber un «ancho-3» para el botón de puntos suspensivos ejemplo, de lo contrario su truncar el resultado supera el ancho.

Dejar respuesta

Please enter your comment!
Please enter your name here