Setprecision在一个循环中

时间:2018-02-11 07:36:51

标签: c++ vector struct

struct movie{
    int week;
    int month;
    int year;
    int rating;
};

在下面的循环中,我试图打印出struct的向量中的所有信息,我只想在评级中使用小数,但这使得它在第一次迭代后的所有行中都有小数。

for(int i = 0; i < info.size(); i++) {
    cout << info.at(i).week << endl;            
    cout << info.at(i).month << endl;
    cout << info.at(i).year << endl;
    cout << fixed << setprecision(2) << info.at(i).rating << endl;
}

任何人都知道如何解决这个问题?

另外,如果我没有使用指针并且没有分配动态内存,是否仍然可能发生内存泄漏?

1 个答案:

答案 0 :(得分:0)

这很乏味但您可以保存并恢复格式化标记

for(int i = 0; i < info.size(); i++) {
    cout << info.at(i).week << endl;            
    cout << info.at(i).month << endl;
    cout << info.at(i).year << endl;
    ios_base::fmt_flags save = cout.flags();
    cout << fixed << setprecision(2) << info.at(i).rating << endl;
    cout.flags(save);
}