1
出於好奇,我想知道如何不同的文件能夠分配某些符號來改變他們正常的C字符串文字到其他文字。自定義字符串文字
對於實施例...
在Objective-C,所述的NSString文字可以通過@"..."
在C++(我想),C++的字符串文字寫入S"..."
在被寫入WCHAR庫,將wchar_t文字是writtel L"..."
誰能告訴我怎麼做一個字符串像,MyClass的文字作爲#"..."
謝謝
出於好奇,我想知道如何不同的文件能夠分配某些符號來改變他們正常的C字符串文字到其他文字。自定義字符串文字
對於實施例...
在Objective-C,所述的NSString文字可以通過@"..."
在C++(我想),C++的字符串文字寫入S"..."
在被寫入WCHAR庫,將wchar_t文字是writtel 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;
}
C++ 11允許用戶自定義文字。 http://liveworkspace.org/code/cfff55e34d3b707e1bf0cb714e8e8f29
但是沒有能力來定義前綴文字。
這些被實現到C++中。據我所知,這個「S」不存在; 'L「」'被預定義爲意味着寬字符文字。但是,C++ 11實現了[用戶定義的文字](http://www2.research.att.com/~bs/C++0xFAQ.html#UD-literals)。即使那樣,它們最終也只能走,而不是以下劃線開頭的東西是保留的,IIRC。 – chris 2012-07-20 03:01:53
定義L「」在哪裏? PS也許S「」是c# – 2012-07-20 03:06:13
它不在任何頭文件中;它本身就是語言本身,就像'int',以及所有其他關鍵字一樣。 – chris 2012-07-20 03:07:27