将C ++ char数组自动转换为字符串

时间:2017-06-09 21:35:47

标签: c++

假设我有一个可以使用char数组指针构造的String类。是否有任何疯狂的方式,通过一些神奇的运算符重载,自由函数或预处理器宏来使类似Python的语法工作,自动将一个char数组文字自动转换为String?要进行编译:

String a = "Foo".substr(1);

我想一个疯狂的预编译sed语句可以做到这一点,但是clang的能力范围内的东西将是首选。

1 个答案:

答案 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);
}