替换CString C ++中的字符

时间:2015-07-31 11:25:24

标签: c++ mfc

我有一个应用程序读取CString然后将其复制到剪贴板。但是,有问题的CString(SEMSerial)并不是我需要复制的正确信息。我需要将该字符串的前3个字符(" LEO")替换为" SmartSEM"。

有什么方法可以做到这一点吗?

以下是我的代码。

void CBugsDlg::OnBnClickedBtnSem()
{
    CLeo32DB* DB = CLeo32DB::CreateMe();
    TCHAR serial[60];
    DB->DBGetSystemKeyString((LPTSTR)_T("SerialNumber"),(LPTSTR) _T(""), serial, 60);
    CLeo32DB::DestroyMe(DB);    

    CString SEMSerial(serial);

    CVersionTranslatomatic ver(::GetDesktopWindow());

    CString version = ver.GetMajorMinorVersionString() + " " + ver.GetVersionType() + " " + ver.GetBuildNumber() + " " + ver.GetServicePack();

    CString Data = SEMSerial + " " + version;

    HGLOBAL  hglbCopy;

    if( OpenClipboard())
    { 
        wchar_t *wcBuffer = 0;
        hglbCopy = GlobalAlloc(GMEM_MOVEABLE,(Data.GetLength() + 1)*sizeof(wchar_t)); 
        wcBuffer = (wchar_t*)GlobalLock(hglbCopy);
        lstrcpy(wcBuffer, Data);
        GlobalUnlock(hglbCopy);
        EmptyClipboard();
        SetClipboardData(CF_UNICODETEXT, hglbCopy);
        CloseClipboard();
    }
}

3 个答案:

答案 0 :(得分:0)

如果它总是要替换的前3个字符,则可以使用CString::Mid(int)来删除它们:

CString newPrefix = "SmartSEM";
newPrefix += SEMSerial.Mid(3);

答案 1 :(得分:0)

你的意思是替换CString类的方法?

SEMSerial.Replace( _T("LEO"), _T("SmartSEM") );

答案 2 :(得分:0)

StringWithLEO= SEMSerial + StringWithLEO.Mid(3);