一個簡單的問題:爲什麼不C++ 11提供一個 「用戶」(真的,標準庫)創建std::string
定義的文字,如爲什麼沒有標準定義的文字後綴爲std :: string?
auto str = "hello world"s; // str is a std::string
像C++,Objective-C的支持C風格的字符串和更加用戶友好的庫類型NSString
;然而,與C++不同,沒有人會在兩者之間產生混淆,因爲通過在字符串前加上@
來創建NSString
並不重要。實際上,很少看到Objective-C代碼,其中文字不包含前綴@
。每個人都知道這是做到這一點的方法,使用NSString
並繼續。
C++ 11個用戶定義的文字將允許這樣做,實際上Stroustrup的C++ 11 FAQ中的UDL部分正好使用了這個例子。此外,沒有帶前導下劃線的UDL是保留的,所以在允許上述普通的s
時沒有問題 - 它不可能與其他任何事情衝突。
也許我錯過了一些東西,但似乎這將是一種非常有價值且無風險的語言附加,所以有人知道爲什麼C++ 11不提供它嗎?它可能出現在C++ 14中嗎?
那麼,我們走了,在幾秒鐘內完美的答案,+1(或更多,如果我可以)。奇怪的是,它不是最初的UDL提案的一部分,但我們走了。我期待最終(希望)在C++ 14中失去'char *'的詛咒! –
我特別喜歡和'auto'結合使用它# – Excelcius
@Excelcius:比'auto'(至少IMO)更重要的是表達式,比如將字符串加在一起:'「A」s +「B」舉例來說。 –