我有一个读取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();
}
}发布于 2015-07-31 20:27:27
如果总是你想要替换的前3个字符,你可以使用CString::Mid(int),它会把它们去掉:
CString newPrefix = "SmartSEM";
newPrefix += SEMSerial.Mid(3);发布于 2015-07-31 22:33:22
你是说CString类的方法替换吗?
SEMSerial.Replace( _T("LEO"), _T("SmartSEM") );发布于 2015-08-01 06:07:34
StringWithLEO= SEMSerial + StringWithLEO.Mid(3);https://stackoverflow.com/questions/31745031
复制相似问题