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

Rak*_*rai 0 c++

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

String a = "Foo".substr(1);
Run Code Online (Sandbox Code Playgroud)

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

Cur*_*ous 6

对于C++ 11及更高版本

#include <iostream>
#include <string>

int main() {
    using namespace std::string_literals;
    auto a = "foo"s.substr(1);
}
Run Code Online (Sandbox Code Playgroud)

如果你想为自己的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);
}
Run Code Online (Sandbox Code Playgroud)

  • 咩.2017年标记为C++的问题的答案可能会假设我所关心的C++ 14,我甚至不会抱怨C++ 17,因为基本上也是如此. (4认同)