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

标签 c++

假设我有一个可以用 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/

相关文章:

c++ - 如何在程序启动时自动隐式创建类的实例?

c++ - 如何定义模板类的 static const 变量

c# - 在 Java 程序中调用 C# 方法

C++ 返回类型限定符天堂

c++ - 为什么 RegQueryValueEx() 函数在尝试读取注册表项时返回 ERROR_FILE_NOT_FOUND?

c++ - 在 Linux 上编译一个共享库以面向所有发行版

c++ - DSSCL_EXCLUSIVE 不提供独占的音频输出。 DirectSound

c++ - 识别给定函数中的不同变量

c++ - 如何从基本类继承函数

c++ - 相当于 c++ 中的 Console.ReadLine()