是否可以使用带有random_shuffle的矢量随机播放音频文件?

时间:2019-04-15 18:56:44

标签: c++

我正试图在连续循环中随机播放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);
    }
}

1 个答案:

答案 0 :(得分:1)

当然可以。而且,您不需要混洗实际的文件名,可以混洗整数并将其用作文件名向量中的索引。只有最小的整数应该为0,否则第一首曲目将永远不会播放。

赞:

for (auto i : ints) {
    std::cout << filenames[i] << ' ';
}
相关问题