我怎样才能像一张桌子一样打印出来?

cod*_*key 0 c++ tabular

我有以下代码要打印:

cout<<current->bookId<<"\t\t"<<current->bookName<<"\t\t"<<current->year<<"\t\t";
cout<<"Checked out by student "<<current->storedBy<<endl;
Run Code Online (Sandbox Code Playgroud)

看起来像这样

BookId          BookName                Year            Status
1000            Machine Learning                1997            Checked out by student 21000000
1200            Data Mining             1991            Checked out by student 21000020
1400            C++ How to Program              2005            Checked out by student 21000020
1500            Pattern Recognition             2000            Checked out by student 21000000
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能做到这一点:

BookId          BookName                        Year            Status
1000            Machine Learning                1997            Checked out by student 21000000
1200            Data Mining                     1991            Checked out by student 21000020
1400            C++ How to Program              2005            Checked out by student 21000020
1500            Pattern Recognition             2000            Checked out by student 21000000
Run Code Online (Sandbox Code Playgroud)

Kha*_*laf 5

设置字段宽度 std::setw是您正在寻找的。

用法示例:

#include <iostream>     // std::cout, std::endl
#include <iomanip>      // std::setw

int main () {
  std::cout << std::setw(10) << "test" << std::endl; 
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

由于参数为10,所以std::setw会显示"test"在屏幕的第10、11、12、13个字符上。

在您的情况下,您将使用与此类似的例程,并且通过一些试验和错误,您将实现您想要的:

std::cout << std::setw(10) << "col1" << std::setw(5) << "col2" << std::endl; 
Run Code Online (Sandbox Code Playgroud)

  • ...并使用 `std::left/std::right` 将输出向左或向右对齐。 (2认同)