2013年4月23日火曜日

std::string を wchar_t*に変換する


認識結果を232C経由で他の装置に送るとき、シリアル通信を扱うことになる

シリアル通信は、Windows7になっても抽象化されていなく、CreateFileを使用してhandleを取得してアクセスしなければならない

古い資料では、アクセス対象となるファイルの指定には、LPCTSTR lpFileNameを用いることになっているが、Windows7では、LPCWSTRを指定する必要がある。

要求を満たすのであれば、L"COM3"のようにソースに固定値を埋め込めばよい

しかし、OpenCVのファイルストレージを使用する場合、扱える型がstd::stringなので、LPCWSTR(wchar_t*)に変換する必要がある。

std::string portname("COM7");
WCHAR wString[16];

size_t wLen = 0;
errno_t err = 0;

//ロケール指定
setlocale(LC_ALL,"japanese");

err = mbstowcs_s(&wLen, wString, 10, portname.c_str(), _TRUNCATE);

以上

0 件のコメント:

コメントを投稿