我使用ainsi转义序列改变了终端窗口的标题,但在调用此函数后,在控制台中跳了一行,怎么避免这个?
void setConsoleTitle(std::string const& title)
{
m_title = title;
std::string cmd1 = "echo \"\033]0;";
cmd1 += title;
cmd1 += "\007\"";
system(cmd1.c_str());
}
感谢。
答案 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”命令相同。