CT2A

本文介绍了如何将CString类型的数据转换为char*类型,并提供了一个具体的示例代码。此外,还给出了指向MSDN的链接,进一步说明了不同字符类型之间的转换方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,CString转为char *

char szAsciiIP[64];

memcpy(szAsciiIP, CT2A(m_pEncoder->m_strIP), sizeof(szAsciiIP));

2,详见MSDN

http://msdn.microsoft.com/en-us/library/87zae4a3(v=vs.80).aspx

CSourceType2[C]DestinationType[EX]

where:

  • SourceType and DestinationType are described in the table below.

  • [C] is present when the destination type must be constant.

  • [EX] is present when the initial size of the buffer must be specified as a template argument.

    SourceType/DestinationType Description

    A

    ANSI character string.

    W

    Unicode character string.

    T

    Generic character string (equivalent to W when _UNICODE is defined, equivalent to A otherwise).

    OLE

    OLE character string (equivalent to W).


// 定时器事件处理函数 void CDemoDlg::OnTimer(UINT_PTR nIDEvent) { if (nIDEvent == 1) { TCHAR appFilePath[MAX_PATH]; GetModuleFileName(NULL, appFilePath, MAX_PATH); PathRemoveFileSpec(appFilePath); CString appFileDir = appFilePath; CString PendingPath = appFileDir + _T("\\comp\\common\\extend\\taskFiles\\Pending\\"); CString ProcessedPath = appFileDir + _T("\\comp\\common\\extend\\taskFiles\\Processed\\"); if (!PathFileExists(PendingPath)) CreateDirectory(PendingPath, NULL); if (!PathFileExists(ProcessedPath)) CreateDirectory(ProcessedPath, NULL); WIN32_FIND_DATA FindFileData; HANDLE hFind = FindFirstFile(PendingPath + _T("*.txt"), &FindFileData); if (hFind != INVALID_HANDLE_VALUE) { do { if (!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { CString FileName = FindFileData.cFileName; CString FilePath = PendingPath + FileName; CString NewPath = ProcessedPath + FileName; CStdioFile TaskFile; if (TaskFile.Open(FilePath, CFile::modeRead | CFile::typeText)) { CStringArray ContentLines; CString Line; while (TaskFile.ReadString(Line)) { ContentLines.Add(Line); } TaskFile.Close(); CString inParamsJson; for (int i = 0; i < ContentLines.GetSize(); i++) { if (ContentLines[i].Left(8) == _T("inParams=")) { inParamsJson = ContentLines[i].Mid(8); break; } } int printerType = 0; CString printerName = _T(""); if (!inParamsJson.IsEmpty()) { try { std::string strJson = CT2A(inParamsJson.GetString()); json j = json::parse(strJson); printerName = CString(j["printerName"].get<std::string>().c_str()); printerType = j["printerType"].get<int>(); } catch (...) { /*bsLogger.WriteLog(_T("JSON解析失败"));*/ } } // 转换字符串编码 CT2A printerNameA(printerName); int iret = m_GetPrinterStatus(printerNameA.m_psz, printerType); BOOL bFound = FALSE; for (int i = 0; i < ContentLines.GetSize(); i++) { if (ContentLines[i].Left(10) == _T("TaskValue=")) { CString newLine; newLine.Format(_T("TaskValue=%d"), iret); ContentLines[i] = newLine; bFound = TRUE; break; } } if (!bFound) { CString newLine; newLine.Format(_T("TaskValue=%d"), iret); ContentLines.Add(newLine); } CStdioFile OutFile; if (OutFile.Open(NewPath, CFile::modeCreate | CFile::modeWrite | CFile::typeText)) { for (int i = 0; i < ContentLines.GetSize(); i++) { OutFile.WriteString(ContentLines[i] + _T("\n")); } OutFile.Close(); } DeleteFile(FilePath); } } } while (FindNextFile(hFind, &FindFileData)); FindClose(hFind); } } CDialog::OnTimer(nIDEvent); } 修改该函数 改成处理TaskID= inParams=eyJtZXRob2QiOiJHZXRQcmludGVyU3RhdHVzIiwicGFyYW1zIjp7InByaW50ZXJOYW1lIjoiRFMtMTg3MCIsInByaW50ZXJUeXBlIjoiMCJ9LCJ2ZXJzaW9uIjogIjEuMCJ9 TaskValue= 的格式的txt文件,原TaskValue的结果组装成{“result”:“E0001”,“msgaction”:“GetPrinterStatus”,“message”:“6I635Y+W5omT5Y2w5py654q25oCB5aSx6LSlOi0x”}转base64放到message中, 当inParams中的base64解析出来method字段为GetPrinterStatus才调用m_GetPrinterStatus,result成功标识为S0000,TaskID填写为PrinterStatus_54E05B2102DF2E3EC6F80166326DAA86,其中54E05B2102DF2E3EC6F80166326DAA86为printerName的MD5
03-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值