C ++哔声不起作用

Posted

技术标签:

【中文标题】C ++哔声不起作用【英文标题】:C++ Beep not working 【发布时间】:2015-08-16 03:31:36 【问题描述】:

我是一名新手程序员,我正在尝试使用 Beep 函数用 C++ 制作钢琴。问题是,我在按键时听不到声音。这是我的代码:

#include <cstdlib>
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <conio.h>

using namespace std;

int main()
    bool ciclo = true;
    char tecla = _getch();
    while (ciclo);
    if (tecla == 'd')
        Beep(261, 100);
    
    if (tecla == 'f')
        Beep(293, 100);
    
    if (tecla == 'g')
        Beep(329, 100);
    
    if (tecla == 'h')
        Beep(349, 100);
    
    if (tecla == 'j')
        Beep(392, 100);
    
    if (tecla == 'k')
        Beep(440, 100);
    
    if (tecla == 'l')
        Beep(493, 100);
    
    if (tecla == 'k')
        Beep(523, 100);
    

    if (tecla == 'q')
        ciclo = false;
    ;
    if (tecla == 'r')
        Beep(277, 100);
    
    if (tecla == 't')
        Beep(312, 100);
    
    if (tecla == 'u')
        Beep(370, 100);
    
    if (tecla == 'i')
    Beep(415, 100);
    
    if (tecla == 'o')
        Beep(466, 100);
    


我真的找不到任何问题,因此我们将不胜感激。我正在 Visual Studio 2013 上编译。

【问题讨论】:

你用的是哪个编译器? while (ciclo); 是一个无限循环。程序永远不会越过这条线。 谢谢你,Igor,我明白了我的问题,谢谢。我曾经运行过另一个程序,它使用了 beep 功能并且它工作了,这就是为什么我发现它没有工作很奇怪。 【参考方案1】:

虽然您的计算机确实可能没有这些内置扬声器。您的代码也陷入了无限循环。

while (ciclo);

我建议你只要键不是 q 就循环,这样用户就可以退出了。

这是您的代码工作的示例。

#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <conio.h>

using namespace std;

int main()
    while (char tecla = _getch() != 'q')
    
        if (tecla == 'd')
            Beep(261, 100);
        
        if (tecla == 'f')
            Beep(293, 100);
        
        if (tecla == 'g')
            Beep(329, 100);
        
        if (tecla == 'h')
            Beep(349, 100);
        
        if (tecla == 'j')
            Beep(392, 100);
        
        if (tecla == 'k')
            Beep(440, 100);
        
        if (tecla == 'l')
            Beep(493, 100);
        
        if (tecla == 'k')
            Beep(523, 100);
        
        if (tecla == 'r')
            Beep(277, 100);
        
        if (tecla == 't')
            Beep(312, 100);
        
        if (tecla == 'u')
            Beep(370, 100);
        
        if (tecla == 'i')
        Beep(415, 100);
        
        if (tecla == 'o')
            Beep(466, 100);
        
    

【讨论】:

【参考方案2】:

也许您的计算机没有 PC 扬声器。查看文档:https://msdn.microsoft.com/en-us/library/windows/desktop/ms679277(v=vs.85).aspx

【讨论】:

HAHAHAHAHA,我正想说...现代计算机并没有真正配备... '不工作,我不知道出了什么问题:) 其实,我的电脑确实有喇叭,我用过一次哔声,效果很好。这就是我问的原因【参考方案3】:

大多数现代电脑都没有内置扬声器。

通过您的包含语句,我可以看到您使用的是 Windows。 Windows 通常使用系统的默认消息声音(出现对话框时您听到的“叮”声)。确保您的扬声器已打开,或者尝试其他不使用 Beep 的解决方案。

【讨论】:

以上是关于C ++哔声不起作用的主要内容,如果未能解决你的问题,请参考以下文章

c++ - 哔声不起作用(Linux)

C# - Console.Beep 在 Windows Vista 上不起作用

为啥 Beep 功能在 Windows 10 上不起作用

有条件的哔声不起作用

循环,100% CPU 使用,使用睡眠不起作用?

e.Handled 在 VB.net 2010 中不起作用