出于好奇,我想知道不同的文件如何将某些符号分配给它们的常规C字符串字面值,以将其转换为其他字面值。
例如...
在Objective-C中,可以通过@"..."
编写NSString字面量。
在C++(我想),C++字符串字面量是这样编写的:S"..."
在wchar库中,wchar_t字面量是这样编写的:L"..."
有人能告诉我如何将MyClass文字转换为#"..."
吗?
谢谢
出于好奇,我想知道不同的文件如何将某些符号分配给它们的常规C字符串字面值,以将其转换为其他字面值。
例如...
在Objective-C中,可以通过@"..."
编写NSString字面量。
在C++(我想),C++字符串字面量是这样编写的:S"..."
在wchar库中,wchar_t字面量是这样编写的:L"..."
有人能告诉我如何将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;
}
S""
并不存在;L""
预定义为宽字符字面值。然而,C++11实现了用户定义的字面值。即使如此,它们只能放在末尾,并且任何不以下划线开头的内容都是保留的,如果我没记错的话。 - undefinedint
和所有其他关键字一样。 - undefinedconst wchar_t[]
,实际上就像""
是一个const char[]
一样。 - undefined