这是由一些C / C ++实验引起的;声明
printf("\a");
也不是声明
cout << "\a";
发出可听见的铃声。它应该如何发挥作用。 。
答案 0 :(得分:8)
尽管ASCII BEL控制字符具有明确定义的含义,但它在控制台中的精确解释依赖于高度平台。 C将\a
定义为在代码7中找到的ASCII BEL字符的转义序列,有时也称为Ctrl + G.在过去的好时光中,这个控制代码允许远程终端的铃声响起,以警告远程操作员需要注意的消息。
在现代系统中,铃声已基本上被其他机制所取代。您的控制台窗口(无论是* nix上的xterm或类似版本,还是Windows上的控制台Windows)现在都有责任使用该控制字符执行“合理”操作。它也可以完全忽略它。
在Windows上,您可以致电MessageBeep()
,通过0xffffffff
获取一个不使用系统资源的简单哔声,MB_OK
或其他MB_ICON*
来发出声音警报常数以获得系统事件之一。
答案 1 :(得分:2)
要感恩。我想你还没有不幸尝试在繁忙的办公室里显示二进制文件的列表。
答案 2 :(得分:0)
您可以访问 aplay 实用程序(GNU / Linux等):
#include <cstdlib>
int main(int argc, char* argv[])
{
system("yes \"ZaaZa\" | aplay -c 2"); // stop this with ctrl-c
}
您可以发送任何原始声音(或使用某些编码,请参阅-f
选项)来播放。输入man aplay
作为其手册。
答案 3 :(得分:0)
我会查看控制台的配置。我不知道Windows如何处理它,但在Linux上,控制台可以配置为忽略系统铃声,或者在其位置播放自定义声音。我会尝试将控制台的配置作为第一步,然后再转向更复杂的解决方案,例如aplay。
答案 4 :(得分:0)
分配给STDOUT
的终端软件决定如何处理\a
字符。您可以尝试使用其他终端软件。或者深入研究终端的设置。也许有一个开关来启用/禁用铃声。