关于 pVoice->Speak(L"hello", 0, NULL) 的问题

li410426 2014-10-14 11:10:11
在做一个关于文本朗读的程序,其中用到了 hr = pVoice->Speak(L“hello”, 0, NULL)语句 在代码中,能够读出”hello。但是“我希望能够接收一个字符串再读取:string s = "s需要外部传入“ : hr = pVoice->Speak(????). speak()函数中第一个参数L和字符串s怎么能接在一起呢?这有办法解决吗?
...全文
617 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mzlogin 2014-10-16
  • 打赏
  • 举报
回复
wchar_t* szStr = L"hello";
hr = pVoice->Speak(szStr, 0, NULL);
或者
wstring wsStr = L"hello";
hr = pVoice->Speak(wsStr.c_str(), 0, NULL);
都行。 如果你拿到的是string类型,那你需要先将string类型转换成wstring类型,转换方法(我懒得写了,从百度找了一个)
std::wstring  StringToWString(const std::string& s)
{
        std::wstring wszStr; 

        int nLength = MultiByteToWideChar( CP_ACP, 0, s.c_str(), -1, NULL, NULL );
        wszStr.resize(nLength);
        LPWSTR lpwszStr = new wchar_t[nLength];
        MultiByteToWideChar( CP_ACP, 0, s.c_str(), -1, lpwszStr, nLength );
        wszStr = lpwszStr;
        delete [] lpwszStr;

        return wszStr;
}
li410426 2014-10-15
  • 打赏
  • 举报
回复
谢谢您,因为从来没见过 wchar_t* 这个形式,所以也不知道怎么用。能不能举个例子呢?再次拜谢了!
mzlogin 2014-10-15
  • 打赏
  • 举报
回复
L不是参数,表示后面的字符串是Unicode的,那你外部传入一个wchar_t*的s就好了。

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧