C++ MFC提取标记之间的字符串

C++ MFC提取标记之间的字符串,c++,c++11,visual-c++,mfc,C++,C++11,Visual C++,Mfc,我正在尝试编写一个函数来使用cstring检索两个标记或字符之间的值,到目前为止我还不能这样做 CODE REMOVED 我非常确定StartIndex和EndIndex的值是正确的,但是我被困在最后一步,我应该从标记之间提取子字符串 编辑://多亏了Igor Tandetnik,它成功了。如果有人知道,如果我使用(LPCWSTR)显式强制转换SubStr,为什么SubStr只能使用wcout正确打印,那将不胜感激。我将留下下面的工作代码,以防其他人需要或想要改进它 CString Extra

我正在尝试编写一个函数来使用cstring检索两个标记或字符之间的值,到目前为止我还不能这样做

CODE REMOVED
我非常确定StartIndex和EndIndex的值是正确的,但是我被困在最后一步,我应该从标记之间提取子字符串

编辑://多亏了Igor Tandetnik,它成功了。如果有人知道,如果我使用
(LPCWSTR)
显式强制转换SubStr,为什么SubStr只能使用wcout正确打印,那将不胜感激。我将留下下面的工作代码,以防其他人需要或想要改进它

CString ExtractString(CString strSource, CString strStart, CString strEnd)
{
    CString SubStr = L"";
    int iEndIndex, iStartIndex = strSource.Find(strStart);
    iStartIndex += strStart.GetLength();
    iEndIndex = strSource.Find(strEnd, iStartIndex);

    if (iStartIndex == -1 || iEndIndex == -1)
    {
        wcout << L"TAG not found!" << endl;
        return SubStr;
    }

    SubStr = strSource.Mid(iStartIndex, (iEndIndex - iStartIndex));
    SubStr.Trim();
    return SubStr;
}
CString提取字符串(CString strSource、CString strStart、CString strengd)
{
CString SubStr=L“”;
intiendindex,iStartIndex=strSource.Find(strStart);
IStarIndex+=strStart.GetLength();
iEndIndex=strSource.Find(strengd,iStartIndex);
如果(iStartIndex==-1 | | iEndIndex==-1)
{

wcout如果您将
std::wstring
传递给
wcout
,效果很好,因为这些家伙彼此都认识。
wcout
将选择正确的
定义“卡住”.困难的性质到底是什么?你观察到了什么结果,你期望什么,以及两者的区别是什么?我正在尝试获取两个标记之间的子字符串,当前我的函数工作不正常。当我尝试获取子字符串(LAT)S 20 58 45(结束)时输出应该是S 20 58,包括空白。现在,我只得到十六进制值。我检查了索引StestCurnand和EndiDek,它们确实返回了正确的值,所以我假设问题在第6行,我正在尝试提取子串。我刚开始用C++编程,我没有什么想法。现在我做错了,所以任何建议都非常感谢。我猜,您正在构建一个Ansi(而不是Unicode)构建。十六进制字符串是由
SubStr
管理的字符缓冲区的地址,因为您的打印语句本质上是
wcout感谢Igor的帮助,但是我使用Unicode字符集构建它。我猜第6行可能有问题,或者后面的逻辑不正确。请尝试
wcout
wcout << LPCWSTR(SubStr);
//or
wcout << SubStr.GetString();