调用AINSI转义序列时避免行返回

时间:2015-01-22 07:42:37

标签: c++ linux escaping sequence

我使用ainsi转义序列改变了终端窗口的标题,但在调用此函数后,在控制台中跳了一行,怎么避免这个?

void setConsoleTitle(std::string const& title)
{
    m_title = title;
    std::string cmd1 = "echo \"\033]0;";
    cmd1 += title;
    cmd1 += "\007\"";

    system(cmd1.c_str());
}

感谢。

1 个答案:

答案 0 :(得分:0)

ReallY不要在这里使用system(它启动一个新的进程,运行一个shell,然后在该shell中运行echo,并删除该新进程 - 这是一个如果您需要运行编译器或解压缩,可以使用cout或类似的 - system输出很多工作来输出一些字符到屏幕上一个zip文件 - 在你自己的程序中不容易做到的事情。但是,如果您坚持使用system,请使用echo -n ...,其中man echo将其解释为:

  

-n不输出尾随换行符

但是,只需使用cout就可以了:

 cout << "\033]0;" << title << "\a";

\a是“闹钟”,与\007相同,但如果您的系统不使用字符编号7“响铃”,则可以移动

为什么你想打印“噪音”超出我的范围,但上面的内容与你的“echo”命令相同。