С++ mciSendString setaudio ошибка

У меня есть эта функция здесь; громкость установлена ​​на 500, а строка имени файла установлена ​​​​на «test.mp3».

void Volume(int volume, std::string filename)
        {
        std::string szCommand = "setaudio \"" + filename + "\" volume to " + volume;
        mciSendString(szCommand.c_str(), NULL, 0, 0);
    }

Это дает мне ошибку;

no match for 'operator+' in 'std::operator+(std::basic_string<_CharT, _Traits, _Alloc>&&, const _CharT*) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>](((const char*)"\" volume to ")) + volume'|

Я понятия не имею, почему, потому что следующая функция ниже отлично работает при загрузке файла .mp3.

void Load(std::string filename)
    {
        std::string szCommand = "open \"" + filename + "\" type mpegvideo alias " + filename;
        mciSendString(szCommand.c_str(), NULL, 0, 0);
    }

Я в замешательстве, почему это не работает. Что не так с setaudio, не принимающим имя файла? Я искал везде, и ответа нет, даже в MSDN.


person nurtul    schedule 29.10.2013    source источник


Ответы (1)


Это не работает, потому что volume является целым числом, а не строкой. Вам нужно преобразовать целое число в строку. В зависимости от вашего компилятора вы должны иметь возможность использовать std::to_string для преобразования из int в строку.

person pstrjds    schedule 29.10.2013
comment
Вау, очень глупая ошибка с моей стороны, большое спасибо, теперь все работает. - person nurtul; 29.10.2013