C++ 如何播放具有特定名称的音频
我想播放具有特定名称的音频文件,例如,如果用户输入数字3,我想让代码播放名称为3.wav的音频文件C++ 如何播放具有特定名称的音频,c++,C++,我想播放具有特定名称的音频文件,例如,如果用户输入数字3,我想让代码播放名称为3.wav的音频文件 string a; cin >> a; PlaySound(TEXT("C:/Users/Name/Desktop/" && a && ".wav"), NULL, SND_SYNC); 这当然行不通。有什么建议吗?或者我必须编写多个IFs吗?因为
string a;
cin >> a;
PlaySound(TEXT("C:/Users/Name/Desktop/" && a && ".wav"), NULL, SND_SYNC);
这当然行不通。有什么建议吗?或者我必须编写多个IFs吗?因为
a
是std::string
(而不是std::wstring
)您可能应该在Windows中使用ANSI API(PlaySoundA
)
您可以这样做:
#include <windows.h>
#include <iostream>
#include <string>
int main() {
std::string a;
if(std::getline(std::cin, a)) { // getline lets you enter filenames containing spaces
PlaySoundA(("C:/Users/Name/Desktop/" + a + ".wav").c_str(), nullptr, SND_SYNC);
}
}
+
连接std::string
s,而不是&
。注意这只适用于std::string
s。如果尝试将字符数组与+,程序将执行指针算术std::wstring
,std::wcin
和L
前缀来指定宽字符串文本文本
宏<代码>文本是一种快速的方法,可以轻松地将程序从早期使用8位字符的Windows操作系统移植到基于Windows NT的操作系统,这些操作系统更喜欢使用宽字符以简化国际化<如果设置了UNICODE标志,则在编译时使用code>TEXT将char
字符串文字转换为wchar
字符串文字,方法是在L
前缀前加前缀。Windows XP在21世纪初淘汰了所有较旧的Windows操作系统,从那时起,最好在整个系统中使用宽字符std::wstring a;
//^所有内容都必须是宽字符
std::wcin>>a;
//^甚至cin
PlaySoundW((L“C:/Users/Name/Desktop/“+a+L.wav”).C_str(),NULL,SND_SYNC);
//零歧义。仅限宽字符。
//^从wstring获取wchar数组
//^^宽字符串文字
标准C++对播放音频文件没有任何概念。 & & >代码>运算符不是C++中的字符串连接。你的意思很可能是+
。克里斯,答案有用吗?
int main() {
std::string a;
if(std::getline(std::cin, a)) {
std::string wavpath = "C:/Users/Name/Desktop/" + a + ".wav";
std::cout << "Playing " << wavpath << '\n';
if(PlaySoundA(wavpath.c_str(), nullptr, SND_SYNC) == FALSE) {
std::cout << "Failed playing sound\n";
}
}
}