出于好奇,我想知道不同的文件如何能够分配某些符号以将它们的常规 c 字符串文字更改为其他文字。
例如...
在 Objective-C 中,NSString 字面量可以写成@"..."
在 C++ 中(我认为),C++ 字符串字面量是这样写的S"..."
在 wchar 库中, wchar_t 文字是 writtelL"..."
谁能告诉我如何做一个字符串,如 MyClass 文字#"..."
谢谢
出于好奇,我想知道不同的文件如何能够分配某些符号以将它们的常规 c 字符串文字更改为其他文字。
例如...
在 Objective-C 中,NSString 字面量可以写成@"..."
在 C++ 中(我认为),C++ 字符串字面量是这样写的S"..."
在 wchar 库中, wchar_t 文字是 writtelL"..."
谁能告诉我如何做一个字符串,如 MyClass 文字#"..."
谢谢
你只能使用这样的东西。
#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;
}
C++11 允许用户定义的文字。http://liveworkspace.org/code/cfff55e34d3b707e1bf0cb714e8e8f29
但是没有能力定义前缀文字。