自定义字符串文字

Cha*_*den 4 c++ objective-c cstring wchar string-literals

出于好奇,我想知道不同的文件如何能够分配某些符号以将它们常规的 c 字符串文字更改为其他文字。

例如...

在 Objective-C 中,NSString 文字可以写成@"..."

在 C++ 中(我认为),C++ 字符串文字是这样写的S"..."

在wchar库中,wchar_t文字是writtelL"..."

谁能告诉我如何做一个像 MyClass 文字这样的字符串#"..."

谢谢

For*_*veR 5

你只能使用这样的东西。

#include <iostream>
#include <string>

struct MyClass
{
public:
   MyClass(const char* a, size_t sz):
   s(a, sz)
   {
   }
   std::string get() const { return s; }
private:
   std::string s;
};

MyClass operator "" _M(const char* arr, size_t size) { return MyClass(arr, size); }

int main()
{
   MyClass c = "hello"_M;
   std::cout << c.get() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

C++11 允许用户定义文字。http://liveworkspace.org/code/cfff55e34d3b707e1bf0cb714e8e8f29
但是没有能力定义前缀文字。