假设我有一个可以使用char数组指针构造的String类。是否有任何疯狂的方式,通过一些神奇的运算符重载,自由函数或预处理器宏来使类似Python的语法工作,自动将一个char数组文字自动转换为String?要进行编译:
String a = "Foo".substr(1);
我想一个疯狂的预编译sed语句可以做到这一点,但是clang的能力范围内的东西将是首选。
答案 0 :(得分:6)
对于C ++ 11及更高版本
#include <iostream>
#include <string>
int main() {
using namespace std::string_literals;
auto a = "foo"s.substr(1);
}
如果你想为你自己的String
类写这个,那么获得相同行为的方法是滚动你自己的用户定义的字符串文字,然后做同样的
#include <cstddef>
class Str {
public:
explicit Str(const char*) {}
Str substr(int) { return *this; }
};
Str operator"" _s (const char* input, std::size_t) {
return Str{input};
}
int main() {
auto s = "something"_s.substr(1);
}