[英]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.