用户定义文字运算符的问题(在原始模式下)

A problem with user-defined literal operator (in raw mode)

我正在尝试以文字模式定义文字运算符(即)函数参数列表应该是 const char* arg1 而不是 const char* arg1,size_t size 但我不能

#include<iostream>
#include<string>




int operator"" _i(const char* charsArr){

        return std::stoi(std::string{charsArr});
    }


int main(){
        std::cout<<"1234324"_i;

        return 0;
    }

编译器错误信息

error C3688: invalid literal suffix '_i'; literal operator or literal operator template 'operator ""_i' not found
note: Literal operator must have a parameter list of the form 'const char *, std::size_t'

应用于字符串文字的 UDL 只有一种模式(C++20 中有 2 种模式,但新模式不适用于您的情况):您得到一个指针和一个大小。只有非字符串 UDL 具有单参数 const char* 形式。

也就是说,C++ 中的字符串文字可以包含嵌入的 NUL 字符,并且您的 UDL 不允许伪装成其他字符。