并排打印卡片组
Printing a card deck side-by-side
本文关键字:打印 更新时间:2023-10-16
我有一个卡片组,它将一次向终端打印一张卡片。然而,由于终端的工作方式,它们会垂直向下打印。有没有什么方法或功能可以让它们并排打印?下面是我的代码示例。
cout << "---------" << endl;
cout << "|"<<"6"<<setw(7)<<"|"<<endl;
cout << "|"<<setw(4)<< "S" << setw(6)<<"S"<<setw(2)<<"|"<<endl;
cout << "|"<<setw(8)<<"|"<<endl;
cout << "|"<<setw(8)<<"|"<<endl;
cout << "|"<<setw(4)<< "S" << setw(6)<<"S" <<setw(2)<<"|"<<endl;
cout << "|"<<setw(8)<<"|"<<endl;
cout << "|"<<setw(8)<<"|"<<endl;
cout << "|"<<setw(4)<< "S" << setw(6)<<"S"<<setw(2)<<"|"<<endl;
cout << "|"<<setw(7)<<"6"<<"|"<<endl;
cout << "---------" << endl;
endl插入换行符并刷新输出流。如果要插入新行,可以使用"\n"字符。如果你想刷新它(我怀疑你是否想要),你可以使用std::flush,如果你不想要这两个,那么你不需要std::endl、'\n'或std::flush,这样你就不用它们了。
C++iostream endl的惨败是什么?
流中没有任何内容可以帮助您按大小并排打印,但您可以将每张卡表示为格式化的std::strings
数组,然后逐行打印所有卡。例如:
class card {
public:
std::string get_row(int row) const {
switch (row) {
case 0: case 10: return "---------";
case 1: return "|6 |";
// ...
}
}
// ...
};
std::vector<card> deck;
// fill the deck
for (int i(0); i != 11; ++i) {
for (auto const& card: deck) {
std::cout << card.get_row(i);
}
std::cout << 'n';
}
很明显,你不想从常数中格式化卡片,但我想传达这个想法,而不是迷失在格式化每张卡片的细节中。当然,您不想使用std::endl
,但这只是一个附带说明。
相关文章:
- 如何循环打印顶点结构
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 如何在c++中打印目录
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 在线编译器中的分段C++没有打印消息
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 如何将结构插入到集合中并打印集合的成员
- 在循环C++中指定字符串之后,不会打印该字符串
- 以螺旋方式打印矩阵的程序.(工作不好)
- 从控制台中删除最后打印的元素
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 如何仅使用对象名称打印特定于对象的成员
- 回溯C++不打印函数,因此文件
- 在一定长度后从数组中打印时缺少整数
- 为什么这个 c++ 代码打印出长度 5,当我打印出字符串时,程序会自动终止?
- 在gem5中打印文件中的所有cache_blocks
- 打印数字图案
- Log4cpp:以UTC/GMT时区打印日期
- 如何使用gdb制作一个可以漂亮地打印每个对象的C++函数