【问题标题】:replacing characters in a CString C++替换 CString C++ 中的字符
【发布时间】:2015-07-31 11:25:24
【问题描述】:

我有一个读取 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();
    }
}

【问题讨论】:

  • 你看过 CString::Replace() 吗?
  • 你的问题不清楚。需要替换的字符串变量是什么?

标签: c++ mfc


【解决方案1】:

如果始终是您要替换的前 3 个字符,您可以使用 CString::Mid(int) 将它们切断:

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

【讨论】:

    【解决方案2】:

    你是说CString类的方法Replace?

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

    【讨论】:

      【解决方案3】:
      StringWithLEO= SEMSerial + StringWithLEO.Mid(3);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-02
        • 1970-01-01
        • 2022-07-11
        相关资源
        最近更新 更多