前提・実現したいこと
C++で音楽ファイルをランダムに再生していくプログラムを作っています。
乱数を入れた変数.wavをファイル名として指定したいです。
出来たらPlaySound関数のSND_RESOURCEの方で解決してくださるとよりありがたいですが、解決すればSND_FILENAMEのままでも構いません。
発生している問題・エラーメッセージ
ファイル名の指定がうまくいきません。
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー (アクティブ) E0413 "std::string" から "LPCWSTR" への適切な変換関数が存在しません 人を不安にさせる音楽制作ツール e:\作業中\人を不安にさせる音楽制作ツール\人を不安にさせる音楽制作ツール\人を不安にさせる音楽制作ツール\Source.cpp 29 エラー C2664 'BOOL PlaySoundW(LPCWSTR,HMODULE,DWORD)': 引数 1 を 'std::string' から 'LPCWSTR' へ変換できません。 人を不安にさせる音楽制作ツール e:\作業中\人を不安にさせる音楽制作ツール\人を不安にさせる音楽制作ツール\人を不安にさせる音楽制作ツール\source.cpp 28
該当のソースコード
C++
1#include<iostream> 2#include<random> 3#include<ctime> 4#include<string> 5#include<windows.h> 6#include<mmsystem.h> 7#include<conio.h> 8#pragma comment(lib,"winmm.lib") 9 10using namespace std; 11 12int main(void) { 13 14 srand((unsigned int)time(NULL)); 15 16 int random = 0; 17 const int fnum = 13; 18 19 while (_kbhit()) { 20 random = rand() % fnum; 21 22 string Lfname = "%02d.wav", random; 23 24 //"std::string"から"LPCWSTR"へ変換できない 25// PlaySound(fname, NULL, SND_FILENAME | SND_SYNC); 26 27 //Lfnameが定義されていない 28 //変数名をLfnameに変更すると"std::string"から"LPCWSTR"へ変換できないと言われる 29 PlaySound(TEXT(fname), NULL, SND_FILENAME | SND_SYNC); 30 31 } 32 33 return 0; 34}
試したこと
プロパティの変更からマルチバイト文字に変更:項目が見当たらない
TEXT(fname) : Lfnameが定義されていない
変数名をLfnameに : 最初のエラー("std::string"から"LPCWSTR"へ変換できない)が出る
直値でファイルネームを指定 : 正常に音が鳴る
リソースファイルにして解決しようともしたのですが、インスタンスハンドルもわからないので疑問点が増えただけでした。
補足情報(FW/ツールのバージョンなど)
Visual studio 2017 無料版
.NET Framework

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/05 04:14 編集
2018/06/05 04:17
2018/06/05 04:35
2018/06/05 05:07
2018/06/05 05:37
2018/06/05 05:48