一个简单的问题:为什么不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”举例来说。 –