为什么在wchar_t上使用 Cstring

Why to use Cstring over wchar_t

本文关键字:Cstring wchar 为什么      更新时间:2023-10-16

我有一个代码,其中Cstring和wchar_t都使用了。我想我可以用wchar_t而不是Cstring做同样的工作,那么为什么要使用Cstring。

在m_szChargeType和m_szConfirmedChargeType我有A。起初我的代码是

wchar_t m_szChargeType[LEN_CHARGE_TYPE];
wchar_t m_szConfirmedChargeType[LEN_CHARGE_TYPE];
LoadString(GetResourceInstance(),IDS_MS_CI_TYPEA,m_szChargeType,LEN_CHARGE_TYPE);//      fills value A in m_szChargeType
LoadString(GetResourceInstance(),IDS_MS_CI_TYPEA,m_szConfirmedChargeType,LEN_CHARGE_TYPE);        // fills value A in m_szConfirmedChargeType   
CString strSpace(IDS_MS_SPACE); //IDS_MS_SPACE has a space in rc file and IDS_MS_TYPE   have rate in ini file
CString strType(IDS_MS_TYPE);
strSpace += strType;
wsprintf(m_szChargeType, _T("%s%s"), m_szChargeType, strSpace);
wsprintf(m_szConfirmedChargeType, _T("%s%s"), m_szConfirmedChargeType, strSpace);

m_szChargeType 和 m_szConfirmedChargeType 的结果为 A0,但预期为 A 率

然后我做到了

wchar_t strSpace[LEN_CHARGE_TYPE];
wchar_t strType[LEN_CHARGE_TYPE];
LoadString(GetResourceInstance(),IDS_MS_SPACE,strSpace,LEN_CHARGE_TYPE);
LoadString(GetResourceInstance(),IDS_MS_TYPE,strType,LEN_CHARGE_TYPE);
wsprintf(m_szChargeType, _T("%s%s%s"), m_szChargeType, strSpace, strType);
wsprintf(m_szConfirmedChargeType, _T("%s%s%s"), m_szConfirmedChargeType, strSpace, strType);  

它工作正常。 并且输出与预期相同 A 率

CString是一个类,因此它提供了功能。 wchar_t只是一个基本类型,它表示单个宽字符。我假设你在谈论wchar_t*.

就像问为什么你应该使用std::string而不是char*