Ja, sie gibt es seit C++ 11. Sie heißen user-defined literals. Dieses spezifische Literal wurde in C++14 standardisiert, es ist jedoch leicht, Ihre eigenen zu rollen.
#include <string>
#include <iostream>
int main()
{
using namespace std::string_literals;
std::string s1 = "abc\0\0def";
std::string s2 = "abc\0\0def"s;
std::cout << "s1: " << s1.size() << " \"" << s1 << "\"\n";
std::cout << "s2: " << s2.size() << " \"" << s2 << "\"\n";
}
Zum Beispiel Ihre eigene std :: Stringliteral zu machen, könnten Sie tun (beachten Sie, alle benutzerdefinierten Literale müssen mit einem Unterstrich beginnen):
std::string operator"" _s(const char* s, unsigned long n)
{
return std::string(s, n);
}
das Beispiel verwenden I gab, einfach tun:
#include <iostream>
#include <string>
std::string operator"" _s(const char* s, unsigned long n)
{
return std::string(s, n);
}
int main(void)
{
auto s = "My message"_s;
std::cout << s << std::endl;
return 0;
}
[Stringliteral] (http://en.cppreference.com/w/cpp/string/basic_string/operator%22%22s) (seit C++ 14). – songyuanyao
meinst du den Betreiber "" s ??? –
Vielen Dank für die Antwort, ich denke, diese Antwort ist genau das, was ich suche, bitte stellen Sie dies als eine Antwort für mich zu genehmigen :). – dguan