假设我有一个可以用 char 数组指针构造的 String 类。是否有任何疯狂的方法,通过一些神奇的运算符重载、自由函数或预处理器宏来使类似 Python 的语法工作,将 char 数组文字自动转换为 String?要进行此编译:
String a = "Foo".substr(1);
我想一个疯狂的预编译 sed 语句可以做到这一点,但最好是 clang 能力范围内的东西。
最佳答案
对于 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);
}
关于c++ - 将 C++ 字符数组自动转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44467028/