C++ 将文本居中到给定大小的功能
C++ Function to center text to a given size
我在开学的第 4 周,在我的 c++ 课上,我们正在做我的真实值表在我的PHP类和JavaScript类中都已经完成了。 到目前为止,我们只有学习输出的 cout(我们正在做控制台应用程序)。
我们已经了解了setw(),但我希望将我的文本集中在一个自制的表格中。有人可以告诉我如何编写一个输入字符串和字段总大小并返回在该大小的文件中居中的字符串的函数吗?
Example output I'm trying to generate:
+---+---+----+----+--------+--------+
| x | y | !x | !y | x && y | x || y |
+---+---+----+----+--------+--------+
| T | T | F | F | T | T |
+---+---+----+----+--------+--------+
| T | F | F | T | F | T |
+---+---+----+----+--------+--------+
Example code I want to use:
#include <iostream>
#include <string>
using namespace std;
...
//Declare Constants and Variables
const char *COL1HDR = "x";
const int COL1SZ = strlen(COL1HDR) + 2; // 2 for padding L & R
const char *COL2HDR = "y";
const int COL2SZ = strlen(COL2HDR) + 2;
const char *COL3HDR = "!x";
const int COL3SZ = strlen(COL3HDR) + 2;
const char *COL4HDR = "!y";
const int COL4SZ = strlen(COL4HDR) + 2;
const char *COL5HDR = "x && y";
const int COL5SZ = strlen(COL5HDR) + 2;
const char *BOXPART = "+---+---+----+----+--------+--------+";
char c1a[COL1SZ+1], c2a[COL2SZ+1], c3a[COL3SZ+1],
c4a[COL4SZ+1], c5a[COL5SZ+1]; // Will hold 'T', 'F' or Header
bool x, y; // two variables for the truth table
bool a // Boolean placeholder for the logic result
// Build Header Row
c1a = cntr(COL1HDR, COL1SZ);
c2a = cntr(COL2HDR, COL2SZ);
c3a = cntr(COL3HDR, COL3SZ);
c4a = cntr(COL4HDR, COL4SZ);
c5a = cntr(COL5HDR, COL5SZ);
//Display header of table
cout << BOXPART << endl;
cout << "|" << c1a << "|" << c2a << "|" << c3a << "|" << c4a << "|" << c5a << "|n";
cout << BOXPART << endl;
// Calculate first row of table
x = 1; // 0 = False, 1= True
y = 1;
a = x ; c1a = (a) ? 'T' : 'F'; c1a = cntr(c1a, COL1SZ);
a = y; c2a = (a) ? 'T' : 'F'; c2a = cntr(c2a, COL2SZ);
a = !x ; c3a = (a) ? 'T' : 'F'; c3a = cntr(c3a, COL3SZ);
a = !y; c4a = (a) ? 'T' : 'F'; c4a = cntr(c4a, COL4SZ);
a = x && y; c5a = (a) ? 'T' : 'F'; c5a = cntr(c5a, COL5SZ);
// Display first row of table
cout << "|" << c1a << "|" << c2a << "|" << c3a << "|" << c4a << "|" << c5a << "|n";
cout << BOXPART << endl;
所以你知道,最终的真值表的列比我在这里显示的要多得多,但你明白了。
如果有人能告诉我如何创建 cntr 函数,我将不胜感激。 它会帮助我完成作业,但绝不是帮我做作业。(格式是我的想法,不是作业的一部分。
你可以看到我正在尝试做的最后一个表:http://skewl.us/truth.php(我不够精明,无法添加颜色。
最后一点:我将在作业中参考这个问题/答案。 也就是说,如果有人帮助我,我不会把它当作我的原创作品。
谢谢~d
您始终可以"填充"字符串,直到它到达中心:
string Pad(string StringToPad, int Amount, string PadChars, bool Left)
{
string Temp;
for (std::size_t I = Amount; I > StringToPad.size(); --I)
Temp += PadChars;
return (Left ? (Temp + StringToPad) : (StringToPad + Temp));
}
当然,如果速度是一个因素,那么您可以将该临时字符串交换为std::stringstream
。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 文本文件中的单词链表
- 多态性和功能结合
- 从命令行c++发送文本文件名
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 具有文本角色扮演功能的移动系统
- C++ - 为文本RPG创建基本战斗功能
- 升级基于文本游戏的库存中的删除功能
- 功能调用,该函数从文本文件-C 检查输入正确性
- 基于文本的角色扮演游戏拖放和保留物品功能
- 获取/设置功能以更改文本和颜色
- C++ 将文本居中到给定大小的功能
- 改进文本搜索功能
- 如何在MFC功能包应用程序中禁用菜单栏项中的文本恢复
- 音频文件到文本使用SAPI或同等功能的SR
- 在C语言的不同功能中共享打开的文本文件
- 共享库使用静态gnutls库具有文本重定位功能
- 实现插槽功能当且仅当文本框具有焦点并按下"Enter"时?
- 用户界面-GUI和文本模式C++设计,以消除冗余(可选参数?功能过载?)