用c ++发出声音(嘟嘟声)

use*_*854 37 c++

如何用c ++制作硬件蜂鸣声?

谢谢

usr*_*ΛΩΝ 63

cout << '\a';
Run Code Online (Sandbox Code Playgroud)

资源

:)

  • 这不起作用我尝试了全卷,我的 g++ 版本是 `g++ (Ubuntu 9.3.0-10ubuntu2) 9.3.0` (2认同)

Rob*_*itt 50

如果您使用的是Windows操作系统,则会调用一个函数 Beep()

#include <iostream> 
#include <windows.h> // WinApi header 

using namespace std;

int main() 
{ 
    Beep(523,500); // 523 hertz (C5) for 500 milliseconds     
    cin.get(); // wait 
    return 0; 
}
Run Code Online (Sandbox Code Playgroud)

资料来源:http://www.daniweb.com/forums/thread15252.html

对于基于Linux的操作系统,有:

echo -e "\007" >/dev/tty10
Run Code Online (Sandbox Code Playgroud)

如果你不想Beep()在Windows中使用,你可以这样做:

echo "^G"
Run Code Online (Sandbox Code Playgroud)

资料来源:http://www.frank-buss.de/beep/index.html

  • 这不是标准的C++.我们甚至不知道他是否在使用Windows. (6认同)
  • 我不是C++程序员,主要是C#,但认为资源会有所帮助,不要认为值得投票,但这是你的特权 (5认同)
  • +1这是一个很好的答案,因为问题是"甚至没有错". (3认同)

asv*_*kau 8

有几个特定于操作系统的例程用于发出哔哔声.

  • 在类Unix操作系统上,尝试使用(n)curses beep()函数.这可能比'\a'其他人建议的更容易移植,尽管对于大多数终端仿真器可能会起作用.

  • 在一些*BSD中有一个PC扬声器设备.读取驱动程序源代码时,SPKRTONEioctl似乎与原始硬件接口相对应,但似乎还有一个围绕write()驱动程序的字符串构建的高级语言,如联机帮助页中所述.

  • 看起来Linux有类似的驱动程序(例如,请参阅此文章 ; 如果向下滚动,此页面上还有一些示例代码.).

  • 在Windows中有一个名为Beep()的函数.

  • @Ben Voigt:如果我错了,请纠正我,但C++标准只指定'\ a'代表ASCII BEL字符; 但它从未指定程序在将此类字符发送到stdout时的行为.正如你所说,ASCII BEL =='\ a'的部分是非常便携的,但是哔哔声部分是完全未定义的行为. (6认同)

Nam*_*nha 5

或者在包含stdio.h之后的c或c ++中

char d=(char)(7);
printf("%c\n",d);
Run Code Online (Sandbox Code Playgroud)

(char)7被称为钟形字符.


ndr*_*xie 5

您可以使用条件编译:

#ifdef WINDOWS
#include <Windows.h>
void beep() {
  Beep(440, 1000);
}
#elif LINUX
#include <stdio.h>
void beep() {
  system("echo -e "\007" >/dev/tty10");
}
#else
#include <stdio.h>
void beep() {
  cout << "\a" << flush;
}
#endif
Run Code Online (Sandbox Code Playgroud)

  • 最好让 LINUX 部分在频率和时间上也灵活,使用 'system("beep -f 5000 -l 50 -r 2") ' (参见 https://wiki.archlinux.org/index.php/ PC_扬声器) (2认同)