如何使得cout格式的配置作用于所有元素?
我重载了<<运算符,想要使得打印vector时更方便,如下面的代码,但是当我想要调整vector中每个元素的格式时,发现只有第一个元素的格式如我所愿,后面的元素的格式又恢复为默认的了。请问如何使得格式的配置作用于所有元素?
问题相关代码,请勿粘贴截图
#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
template <typename T>
ostream &operator<<(ostream &out, const vector<T> &rhs) {
for (const auto &val : rhs) {
out << val << " ";
}
return out;
}
int main() {
vector<int> a = {5, 6, 7};
cout << a << endl;
cout << setw(5) << a << endl;
cout.width(5);
cout << a << endl;
return 0;
}
运行结果及报错内容
5 6 7
5 6 7
5 6 7
我想要达到的结果
5 6 7