使用STD库在C ++中连接动态大小的矩阵

时间:2013-02-25 11:48:31

标签: c++ matrix std stdvector

我有一条短信:

string text = "HELLO WORLD!"

对于每个字符,如果必须放置一个“像素”来绘制文本,则返回矩阵为0/1的函数:

matrix translate(char * value,int height);    
matrix translate("H",3);

必须返回具有此值的矩阵:

101
111   equal <H>
101

调用每个字符的翻译功能,我想将所有数据存储在dinamic矩阵中:

10101110...
11101100... equal <H><SPACE><E><SPACE>...  etc
10101110...

存储值的最佳方法是什么?

1)我考虑过一个矩阵,但它是静态的。

2)我考虑过使用二维向量,但这个问题非常复杂。

3)当我知道最终的colums数量时,我考虑使用一个大矩阵,但它取决于字母是什么,我需要1次迭代来计算colums的数量(每个字母可能大于3)而另一个需要存储数据。

1 个答案:

答案 0 :(得分:2)

在使用点阵,喷墨和激光打印机之后,我建议你有一个固定大小的矩阵,它具有你输出的最大列数。

例如,对于每英寸600点的8.5英寸宽纸张,将有5100列。

行数取决于您需要的数量或方便数量。

此外,您可能希望使用5x7矩阵,空格== 5x7空白(零)。在字母之间留一些空白列,并将焦点放在固定间距或位图字体上。

对于每个角色,您需要一个矩阵或位图。数组对此非常有效。与字符相关联的位图(矩阵)的集合称为字体。

您可能需要编写矩阵功能,以便将字体从纵向旋转到横向,反之亦然。

编辑1:
你不能用每个句子的列来思考,但在你必须刷新(或处理)缓冲区之前,有多少句子适合你的缓冲区。句子可以非常小到非常大(看看这个答案)。由于字符矩阵在字符之间具有固定的宽度和间距,因此确定字符或许多字符是否适合仅仅是数学函数。