2012-07-20 77 views
1

出於好奇,我想知道如何不同的文件能夠分配某些符號來改變他們正常的C字符串文字到其他文字。自定義字符串文字

對於實施例...

在Objective-C,所述的NSString文字可以通過@"..."

在C++(我想),C++的字符串文字寫入S"..."

在被寫入WCHAR庫,將wchar_t文字是writtel L"..."

誰能告訴我怎麼做一個字符串像,MyClass的文字作爲#"..."

謝謝

+0

這些被實現到C++中。據我所知,這個「S」不存在; 'L「」'被預定義爲意味着寬字符文字。但是,C++ 11實現了[用戶定義的文字](http://www2.research.att.com/~bs/C++0xFAQ.html#UD-literals)。即使那樣,它們最終也只能走,而不是以下劃線開頭的東西是保留的,IIRC。 – chris 2012-07-20 03:01:53

+0

定義L「」在哪裏? PS也許S「」是c# – 2012-07-20 03:06:13

+0

它不在任何頭文件中;它本身就是語言本身,就像'int',以及所有其他關鍵字一樣。 – chris 2012-07-20 03:07:27

回答

2

你只能用這樣的東西。

#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
但是沒有能力來定義前綴文字。