我想从指向文本的指针获取wstring,其中给出了偏移量和长度。
typedef struct SPVTEXTFRAG
{
struct SPVTEXTFRAG *pNext;
SPVSTATE State;
LPCWSTR pTextStart;
ULONG ulTextLen;
ULONG ulTextSrcOffset;
} SPVTEXTFRAG;
pTextStart is a pointer to the beginning of the text associated with the fragment.
ulTextLen is the length of this text, in WCHARs.
ulTextSrcOffset is the offset of the first character of the text associated with the fragment.
Finally, State is the SAPI 5.0 XML state associated with this fragment.
See the XML TTS Tutorial for more details.
我尝试了以下内容:
wstring sText;
sText = nFragList->pTextStart;
sText = sText.substr(nFragList->ulTextSrcOffset,nFragList->ulTextLen);
但是这完全奇怪,所产生的绳索在错误的位置切断并且太短。
对LPCWSTR有更深入理解的人是否可以告诉我如何正确地做到这一点?
非常感谢!
答案 0 :(得分:0)
问题实际上是您对SPVTEXTFRAG
的理解。它是一个单独的片段,所以它有望被切断。你必须重新组装所有碎片。最后一个片段可以被pNext==nullptr
识别。
Aslo,你不应该在片段上调用substr
。它已经是一个片段,你不需要碎片碎片。