Beep函数无法播放声音 系统:`Windows 10` 音响类型:蓝牙音响(可正常播放除Beep以外的声音) main.cpp: #include "music.hpp" #include using namespace std; int main() { Music m("1.txt"); m.play(); return 0; } music.hpp: #include #include #include #include #include #include std::map Split(std::string str, char delim) { std::map result; short cnt = 1; std::stringstream ss(str); std::string buffer; while (getline(ss, buffer, delim)) { result[cnt++] = stoi(buffer); } return result; } class Music { private: struct tempo { short scale; short size; }; std::vector filedata; std::map scaledata; public: void play() { for (std::vector::iterator it = filedata.begin(); it != filedata.end(); ++it) { Beep(DWORD(scaledata[(*it).scale]), DWORD(((*it).size) * 200)); } return; } Music (std::string filename) { std::ifstream file; file.open(filename); std::string buffer; while (getline(file, buffer)) { tempo tmp; std::map tmp1 = Split(buffer, ' '); tmp.scale = tmp1[1]; tmp.size = tmp1[2]; filedata.push_back(tmp); } file.close(); scaledata[-1] = 262; scaledata[-2] = 294; scaledata[-3] = 330; scaledata[-4] = 349; scaledata[-5] = 392; scaledata[-6] = 440; scaledata[-7] = 494; scaledata[1] = 523; scaledata[2] = 578; scaledata[3] = 659; scaledata[4] = 698; scaledata[5] = 784; scaledata[6] = 880; scaledata[7] = 988; scaledata[8] = 1046; scaledata[9] = 1175; scaledata[10] = 1318; scaledata[11] = 1480; scaledata[12] = 1568; scaledata[13] = 1760; scaledata[14] = 1976; return; } }; 1.txt: 1 2 1 2 5 2 5 2 6 2 6 2 5 4 4 2 4 2 3 2 3 2 2 2 2 2 1 4 5 2 5 2 4 2 4 2 3 2 3 2 2 4 5 2 5 2 4 2 4 2 3 2 3 2 2 4 1 2 1 2 5 2 5 2 6 2 6 2 5 4 4 2 4 2 3 2 3 2 2 2 2 2 1 4 做过的尝试 | 期望的结果 | 实际得到的结果 ---|---|--- 重启音响 | 成功播放Beep | 无法播放Beep 重新安装音响驱动 | 成功播放Beep | 无法播放Beep