Pregunta

¿Alguien podría explicar la declaración del manipulador setw? Yo estaba completamente impresionado fuera tratando de entenderlo.! La declaración de la setw en iomanip es el siguiente

 smanip setw(int)

Ahora lo que es smanip? lo que sucede cuando damos std :: cout << setw (10) << "Hai" [quiero saber cómo es en realidad la salida afectada por setw, en otras palabras, las acciones pasa en el fondo)

¿Fue útil?

Solución

smanip es un tipo definido por la implementación. La biblioteca puede definir o typedef con nada que le guste, siempre y cuando el trabajo se hace.

En la práctica, será algún tipo de estructura que representa (a) la manipulación a realizar, y (b) la 10 argumento para ser utilizado en esta manipulación. También podría tener una función para llevar a cabo la manipulación, o puede que no, dependiendo de cómo la implementación ha definido operator<<(ostream &, smanip), o alguna sobrecarga similar a atrapar a los tipos de operando necesarias. No he comprobado mi aplicación para averiguar.

En cuanto a cómo se ve afectada la salida: my_stream << setw(10) se define para que tenga el mismo efecto sobre la corriente como llamar my_stream.width(10). Por lo que la sobrecarga de operator<< asegurará que sucede en cierto modo específico de la implementación. La sobrecarga del operador para manipuladores de flujo no parametrizados se define específicamente para llamar al manipulador, pero con smanip hay un poco más de libertad para las implementaciones.

Otros consejos

setw(int) por sí misma no modifica nada. Simplemente devuelve un manipulador de flujo (smanip) que se puede utilizar para modificar el comportamiento de la corriente.

// setw example
#include <iostream>
#include <iomanip>
using namespace std;

int main () {
  cout << setw (10);
  cout << 77 << endl;
  return 0;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top