[英]What is the difference between L“the following:” and “the following:”
两者之间有什么区别吗? 两者都与vs2013一起编译。
CStringW str1 =“以下内容:”; CString str2 = L“以下:”;
字符串来自afxstr: https ://msdn.microsoft.com/en-us/library/ms174288.aspx
我知道不带L的变体是通过适当的强制转换运算符进行强制转换的,但是如果我在引号之间不使用任何Unicode字符,则使用不带L的表单会引起什么问题。 即使您不打算使用非Unicode字符,这还是使用L“”的良好编程习惯吗?
编辑:也许我意识到了答案。 主要问题是没有L,调用不必要的运算符方法会导致性能下降吗? 但是,两者给出的结果都是正确的吗?
"the following:"
的类型为const char*
而L"the following
's的类型为const wchar_t*
。根据对第二个文字的处理方式,您可能会隐式强制转换,调用某些函数的重载版本,导致专门用于wchar_t
而不是char
类型的模板,或者代码无法编译(并不总是允许缩小和隐式强制转换)请注意,从wchar_t
为char
(隐式或显式)被认为是缩小的,因为通常char
是1个字节,而wchar_t
的大小总是更大。据我所知,是否应该对char
进行signed
还是不unsigned
是特定于实现的;因此,从wchar_t
为char
甚至不会总是产生预期的结果对于后者的ascii子集-您必须检查这些事情的标准,然后,如果您选择L
类型的文字,则程序也将需要更多的内存。与C ++一样,您需要为使用的内容付费,所以如果不是真的 ed unicode字符,请勿使用wchar_t
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.