在C ++中方便地声明编译时字符串
能够在C ++中的编译期间创建和操作字符串有几个有用的应用程序。尽管可以用C ++创建编译时字符串,但是该过程非常繁琐,因为需要将字符串声明为可变的字符序列,例如 using str = sequence<'H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!'>; 诸如字符串连接,子字符串提取等操作很容易实现为对字符序列的操作。是否可以更方便地声明编译时字符串?如果没有,那么作品中是否有建议可以方便地声明编译时字符串? 为什么现有方法失败 理想情况下,我们希望能够声明如下编译时字符串: // Approach 1 using str1 = sequence<"Hello, world!">; 或者,使用用户定义的文字, // Approach 2 constexpr auto str2 = "Hello, world!"_s; 哪里decltype(str2)会有constexpr构造函数。可以利用以下事实来实现方法1的更混乱的版本: template <unsigned Size, const char Array[Size]> struct foo; …