versiones descargar caracteristicas c++ stream iostream

c++ - descargar - ios versiones



Formateando la secuencia de salida, ios:: left e ios:: right (5)

A menos que te sientas masoquista, simplemente usa:

// right justify by default. cout << setw(3) << 1 << setw(3) << 2 << ''/n''; // left justify cout << std::left << setw(3) << 1 << setw(3) << 2 << ''/n''; // right justify again. cout << std::right << setw(3) << 1 << setw(3) << 2 << ''/n'';

Tengo este código:

cout << std::setiosflags(std::ios::right); cout << setw(3) << 1 << setw(3) << 2 << ''/n''; // Output two values cout << std::setiosflags(std::ios::left); cout << setw(3) << 1 << setw(3) << 2 << ''/n''; // Output two values

pero la salida no viene como esperaba. en lugar de:

1 2 1 2

esto sale:

1 2 1 2

¿Cuál es el problema? Configuré ''std :: ios :: left'' pero no hace diferencia?


Parece que si se configuran las banderas left y right , la que se estableció primero tiene prioridad. Si reinicio explícitamente right indicador right antes de configurarlo a la left , obtengo el resultado esperado:

cout << std::setiosflags(std::ios::right); cout << setw(3) << 1 << setw(3) << 2 << ''/n''; // Output two values cout << resetiosflags(std::ios::right); cout << std::setiosflags(std::ios::left); cout << setw(3) << 1 << setw(3) << 2 << ''/n''; // Output two values


Su código quiere que se std::resetiosflags(std::ios::right) un std::resetiosflags(std::ios::right) a la secuencia de salida para deshacer el std::setiosflags(std::ios::right) .


Tienes que borrar el valor anterior en adjustfield antes de poder establecer uno nuevo.

Prueba esto:

#include <iostream> #include <iomanip> int main () { std::cout << std::resetiosflags(std::ios::adjustfield); std::cout << std::setiosflags(std::ios::right); std::cout << std::setw(3) << 1 << std::setw(3) << 2 << ''/n''; std::cout << std::resetiosflags(std::ios::adjustfield); std::cout << std::setiosflags(std::ios::left); std::cout << std::setw(3) << 1 << std::setw(3) << 2 << ''/n''; }


Use setf con una máscara (no necesita resetiosflags)

using namespace std; cout.setf(ios::right, ios::adjustfield); cout << setw(3) << 1 << setw(3) << 2 << ''/n''; // Output two values cout.setf(ios::left, ios::adjustfield); cout << setw(3) << 1 << setw(3) << 2 << ''/n''; // Output two values