C 如何水平打印大字母

C++ How to print Big letters Horizontally?

本文关键字:打印 水平 何水平      更新时间:2023-10-16

例如,A具有打印大" A"

的此功能
void printA(){
    cout<<"0000000n0     0n0     0n0000000n0     0n0     0n";
}
0000000
0     0
0     0
0000000
0     0
0     0

我有所有字母,有什么方法可以水平打印大字母?喜欢:

0000000  0000000  0000000
0     0  0     0  0     0
0     0  0     0  0     0
0000000  0000000  0000000
0     0  0     0  0     0
0     0  0     0  0     0

该程序的目标是用这些大字母在垂直或水平上打印用户的输入。

这是我程序的恢复版本:

void printA(){
    cout<<"0000000n0     0n0     0n0000000n0     0n0     0n"<<endl;
}
void printChar(char c){
    c = toupper(c);
    if (c=='A')
    printA();
}
int main(){
string sentence;
cout<<"enter sentence: ";
cin>> sentence;
for(unsigned int i = 0; i<sentence.length(); i++) {
    char c = sentence[i];
    if(c=='a')
    printA();
}
return 0;
}

我用" n"来保存行,另一个选择是使它们这样的选择:

void printA(){
    cout << "0000000" << endl;
    cout << "0     0" << endl;
    cout << "0     0" << endl;
    cout << "0000000" << endl;
    cout << "0     0" << endl;
    cout << "0     0" << endl;
}

如果无法以我拥有的方式将它们彼此打印,我会重写它们,但是请告诉我如何以水平形式打印它们:(谢谢!

我有以下警报:

main.cpp:29:23: warning: range-based 'for' loops only available with -std=c++11 or -std=gnu++11
         for (char c : text)
                       ^
main.cpp:31:37: warning: 'c' may be used uninitialized in this function [-Wmaybe-uninitialized]
             std::cout << alphabet[c - 'A'][line] << "  ";

如果您可以以不同的格式存储字符的线条(此处,一个2D数组),例如:

const int LINES_PER_CHAR = 6;
const char* alphabet[][LINES_PER_CHAR] = 
{
    /* A */ { "0000000", "0     0", "0     0", "0000000", "0     0", "0     0" },
    /* B */ { "000 ", "0  0", "0  0", "000 ", "0  0", "0000" }
    ...
};

…,然后您可以像这样打印字符:

void PrintBigString(const std::string& text)
{
    for (int line = 0; line < LINES_PER_CHAR; ++line)
    {
        for (char c : text)
        {
            std::cout << alphabet[c - 'A'][line] << "  ";
        }
        std::cout << std::endl;
    }
}

理想情况下,您应该添加一项理智检查,以确保您具有字符串中当前字符的模板。

非C 11编译器的变化:

void PrintBigString(const std::string& text)
{
    for (int line = 0; line < LINES_PER_CHAR; ++line)
    {
        for (int i = 0; i < text.size(); ++i)
        {
            std::cout << alphabet[text[i] - 'A'][line] << "  ";
        }
        std::cout << std::endl;
    }
}