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