먼저? 나는이 가야합니까. 이것은 사실 그 때문이다 ISpVoice::Speak()
함수는 첫 번째 매개 변수가 LPCWSTR
유형이어야하며 IOW는 "넓은 charac에 대한 const 포인터 ter 문자열 ". 다음 기능이 도움이 될 수 있습니다.
inline std::wstring s2w(const std::string &s, const std::locale &loc = std::locale())
{
typedef std::ctype<wchar_t> wchar_facet;
std::wstring return_value;
if (s.empty())
{
return return_value;
}
if (std::has_facet<wchar_facet>(loc))
{
std::vector<wchar_t> to(s.size() + 2, 0);
std::vector<wchar_t>::pointer toPtr = &to[0];
const wchar_facet &facet = std::use_facet<wchar_facet>(loc);
if (0 != facet.widen(s.c_str(), s.c_str() + s.size(), toPtr))
{
return_value = to.data();
}
}
return return_value;
}
그런 다음 코드 줄을 다음과 같이 변경하십시오.
hr = pVoice->Speak(s2w(sTranslated).c_str(), 0, NULL);
c_str()
방법은에 std::wstring
개체의 "C 문자열 해당"포인터를 반환한다. IOW, null로 끝나는 와이드 문자열에 대한 포인터를 반환합니다.
편집 해 주셔서 감사합니다. Remy Lebeau. 내 대답이 크게 향상되었습니다. –