2

好奇心から、さまざまなファイルが特定の記号を割り当てて、通常のc文字列リテラルを他のリテラルに変更する方法を考えていました。

例えば...

Objective-Cでは、NSStringリテラルは次のように記述できます。@"..."

C ++(私は思う)では、C++文字列リテラルは書かれていますS"..."

wcharライブラリでは、wchar_tリテラルはwrittelです。L"..."

MyClassリテラルのような文字列を作成する方法を教えてもらえますか?#"..."

ありがとう

4

1 に答える 1

4

このようなものしか使えません。

#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
ただし、プレフィックスリテラルを定義する機能はありません。

于 2012-07-20T03:13:36.370 に答える