以两列c++显示数据
Display data in two columns c++
我试图显示相同的数据,但分为两列,因此在第19学年之后,数据应显示在表右侧的列中,直到达到总学年数,即36。以下是代码:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int const schoolWeeks = 37;
string week[] = { "A", "B", "C", "D" };
int num = 0;
int main()
{
cout << left << setw(9) << setfill(' ') << "Week " << left << setw(9) << setfill(' ')<< "Menu" << left << setw(9) << setfill(' ') << "Week " << "Menu" << endl;
for (int i = 1; i < 20; i++)
{
cout << left << setw(9) << setfill(' ')<< i << week[num] << endl;
num = num + 1;
if (num == 4)
{
num = 0;
}
}
for (int i = 20; i < schoolWeeks; i++)
{
cout << left << setw(9) << setfill(' ') << i << week[num] << endl;
num = num + 1;
if (num == 4)
{
num = 0;
}
}
}
std::cout
的标准输出基于数据流的思想。记住,它被称为"io流"是有原因的。这意味着,一旦您向std::cout
写入了一些内容,您就无法"返回"几行并添加一些内容。
考虑在Linux shell或Windows命令行中使用管道。可以将程序的输出重定向为另一个程序的输入,然后可以用它做任何可以想象的事情,例如通过互联网发送:
myprogram.exe > otherprogram.exe
在这种情况下,你怎么可能在已经写好的一行中添加一些内容?
考虑到所有这些,很明显,唯一可行的解决方案是提前了解每一行的内容。你不能等到第19行再考虑第二列,你必须马上做。换句话说,先打印第1周和第19周,然后打印第2周和第20周,然后再打印第3周和第21周,依此类推。看到模式了吗?它总是"第一列中的X周,第二列中的X+18周"。这几乎就是解决方案。
下面是一个遵循现有代码风格的快速编写循环:
for (int i = 1; i < 19; i++)
{
cout << left << setw(9) << setfill(' ')<< i << week[num]
<< left << setw(9) << setfill(' ') << " " << (i + 18) << " "
<< left << setw(9) << setfill(' ') << " " << week[num]
<< endl;
num = num + 1;
if (num == 4)
{
num = 0;
}
}
像std::setw
或std::setfill
这样的操纵器可能需要一些改进,但关键是:
- 循环仅从1计数到18
- 主体执行
i
的输出和i + 18
的输出
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 字符串-C++后显示的随机字符
- 继承期间显示未知行为的子类
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- 程序崩溃并显示"std::out_of_range"错误
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 从数据库实时显示QT c++中的数据
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 显示错误输出的简单数组排序程序
- Qt自定义QPush按钮未显示在布局上
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 显示基于用户输入的整数的字符
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 密码登录程序将永远循环并显示不正确的结果
- std::strftime 在 Windows 中使用 GMTIME 将时区 UTC 显示为 UTC+1