Vis*_*iva 8 c++ iostream stream
我有这个代码:
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
Run Code Online (Sandbox Code Playgroud)
但输出并不像我预期的那样.代替:
1 2
1 2
Run Code Online (Sandbox Code Playgroud)
这出来了:
1 2
1 2
Run Code Online (Sandbox Code Playgroud)
问题是什么?我设置'std :: ios :: left'但它没有区别?
Jer*_*fin 17
除非你感到自虐,否则只需使用:
// 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';
Run Code Online (Sandbox Code Playgroud)
您必须先清除adjustfield中的先前值,然后才能设置新值.
试试这个:
#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';
}
Run Code Online (Sandbox Code Playgroud)
使用带掩码的setf(不需要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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15698 次 |
| 最近记录: |