完成一个漫长的项目,最后一步是确保我的数据在正确的列中排列。简单。只有我遇到了麻烦,并且已经花了比我希望承认观看许多视频而且无法真正掌握要做什么的时间更长。因此,这是我遇到麻烦的代码的小片段:

 #include <iostream>
 #include <iomanip>


 using namespace std;

 int main(){

    cout << "Student Grade Summary\n";
    cout << "---------------------\n\n";
    cout << "BIOLOGY CLASS\n\n";
    cout << "Student                                   Final   Final Letter\n";
    cout << "Name                                      Exam    Avg   Grade\n";
    cout << "----------------------------------------------------------------\n";
    cout << "bill"<< " " << "joeyyyyyyy" << right << setw(23)
         << "89" << "      " << "21.00" << "   "
         << "43" << "\n";
    cout << "Bob James" << right << setw(23)
         << "89" << "      " << "21.00" << "   "
         << "43" << "\n";
    }

它适用于第一个条目,但bob james条目具有所有歪斜的数字。我以为setw应该让您忽略它?我想念什么?
谢谢

最佳答案

它不起作用,如您所想。 std::setw仅为下一次插入设置字段的宽度(即it is not "sticky")。

尝试这样的事情:

#include <iostream>
#include <iomanip>

using namespace std;

int main() {

    cout << "Student Grade Summary\n";
    cout << "---------------------\n\n";
    cout << "BIOLOGY CLASS\n\n";

    cout << left << setw(42) << "Student" // left is a sticky manipulator
         << setw(8) << "Final" << setw(6) << "Final"
         << "Letter" << "\n";
    cout << setw(42) << "Name"
         << setw(8) << "Exam" << setw(6) << "Avg"
         << "Grade" << "\n";
    cout << setw(62) << setfill('-') << "";
    cout << setfill(' ') << "\n";
    cout << setw(42) << "bill joeyyyyyyy"
         << setw(8) << "89" << setw(6) << "21.00"
         << "43" << "\n";
    cout << setw(42) << "Bob James"
         << setw(8) << "89" << setw(6) << "21.00"
         << "43" << "\n";
}

也相关:What's the deal with setw()?

10-05 23:46