我正试图在连续循环中随机播放wav文件。
我可以使用下面的类似代码,并在数组中输入wav文件名来代替整数吗?我知道我需要将向量类型从int更改为string。然后使用PlaySound功能播放文件?
#include <vector>
#include <random>
#include <algorithm>
#include <iostream>
int main() {
auto ints = std::vector<int> { 1, 2, 3, 4, 5, 6, 7 };
auto rng = std::default_random_engine {};
std::shuffle(ints.begin(), ints.end(), rng);
for (auto&& i : ints) {
std::cout << i << ' ';
}
}
这是我的新代码:
int main() {
string audio = "audio.wav";
string audio2 = "audio2.wav";
string audio3 = "audio3.wav";
auto ints = std::vector<string> { "audio.wav", "audio2.wav", "audio3.wav" };
auto rng = std::default_random_engine {};
std::shuffle(ints.begin(), ints.end(), rng);
for (auto i : ints) {
PlaySound("audio.wav", NULL, SND_SYNC);
}
}
答案 0 :(得分:1)
当然可以。而且,您不需要混洗实际的文件名,可以混洗整数并将其用作文件名向量中的索引。只有最小的整数应该为0,否则第一首曲目将永远不会播放。
赞:
for (auto i : ints) {
std::cout << filenames[i] << ' ';
}