首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换CString C++中的字符

替换CString C++中的字符
EN

Stack Overflow用户
提问于 2015-07-31 19:25:24
回答 3查看 1.8K关注 0票数 0

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

我有没有办法做到这一点?

下面是我的代码。

代码语言:javascript
复制
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();
    }
}
EN

回答 3

Stack Overflow用户

发布于 2015-07-31 20:27:27

如果总是你想要替换的前3个字符,你可以使用CString::Mid(int),它会把它们去掉:

代码语言:javascript
复制
CString newPrefix = "SmartSEM";
newPrefix += SEMSerial.Mid(3);
票数 0
EN

Stack Overflow用户

发布于 2015-07-31 22:33:22

你是说CString类的方法替换吗?

代码语言:javascript
复制
SEMSerial.Replace( _T("LEO"), _T("SmartSEM") );
票数 0
EN

Stack Overflow用户

发布于 2015-08-01 06:07:34

代码语言:javascript
复制
StringWithLEO= SEMSerial + StringWithLEO.Mid(3);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31745031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档