CStringA转CStringW隐式转换使用的代码页?是否固定为CP_ACP?
CStringA转换为CStringW的代码页说明
当执行wide = narrow;这种CStringA到CStringW的隐式赋值转换时,内部确实使用的是CP_ACP(系统默认ANSI代码页),这一点是有官方保证的。
MFC中CStringW& operator=(const CStringA& strSrc)赋值运算符的实现逻辑,会调用Windows API MultiByteToWideChar,并明确传入CP_ACP作为代码页参数来完成窄字节字符串到宽字节字符串的转换。
你目前采用的wide = CA2W(narrow, CP_ACP);写法非常合理,显式指定代码页的方式比隐式赋值更清晰,能避免潜在的歧义,在MBCS遗留项目中这种写法的可读性和可维护性都更优。
内容的提问来源于stack exchange,提问作者Jabberwocky
相关产品推荐
相关产品推荐

