一个简短的问题:为什么C++11没有提供一个“用户定义的字面量”(实际上是标准库),用于创建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中吗?
char*
的诅咒! - Tristan Brindleauto
结合使用。 - Excelciusauto
相比,更重要的是在表达式中使用,例如将字符串相加:"A"s + "B"s
。这至少是我的观点。 - Jerry Coffin