用于在终端中绘制框的ANSI命令

时间:2016-05-03 22:43:10

标签: terminal draw ansi

我想在屏幕上画一个看起来像这样的框:

┌───┐



└───┘

我找到了ANSI命令来移动光标:

http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html

我的代码如下所示:

int main()
{
    int boxsize = 5;
    std::string bs = std::to_string(boxsize);
    std::string up = "\033[<"+bs+">A";
    std::string down = "\033[<"+bs+">B";
    std::string back = "\033[<"+bs+">D";

    std::cout << "┌";
    for (int i = 0; i < boxsize-2; ++i)
    {
    std::cout << "─";
    std::cout << down;
    std::cout << "─";
    std::cout << up;
    }
    std::cout << "┐";
    std::cout << down;
    std::cout << "┘";
    std::cout << back;
    std::cout << "└";
}

我的结果是:

┌─5>B─5>A─5>B─5>A─5>B─5>A┐5>B┘5>D└

我是否错误地使用ANSI命令,或者这是我的终端(yakuake)的问题?

1 个答案:

答案 0 :(得分:1)

应删除这些行中的尖括号(<>):

std::string up = "\033[<"+bs+">A";
std::string down = "\033[<"+bs+">B";
std::string back = "\033[<"+bs+">D";

TLDP页面中,<N>应该是一个数字,使用古老的表示法来表示斜体文字,例如 N

即使这样,你仍然有工作要做,但这是一个开始:

┌─ ─ ─ ┐




  ─ └ ─ ┘