C++ 从字符串转换为常量字符*+;尺寸(单位:英寸)&引用;操作人员

C++ 从字符串转换为常量字符*+;尺寸(单位:英寸)&引用;操作人员,c++,c++11,C++,C++11,我正在阅读关于”操作符的文章,发现了一些奇怪的代码剪报,我不明白 我不明白从字符串“110011”到常量char*s,size\u t l的转换 我期待着这样的事情: int运算符“”\u b(const std::string){..}或 int运算符“”\u b(const char*s){..} userliteral.cpp ... int operator "" _b (const char * s, size_t l) { int decimal {0}; ...

我正在阅读关于”操作符的文章,发现了一些奇怪的代码剪报,我不明白

我不明白从字符串“110011”到常量char*s,size\u t l的转换

我期待着这样的事情:

int运算符“”\u b(const std::string){..}
int运算符“”\u b(const char*s){..}

userliteral.cpp

...
int operator "" _b (const char * s, size_t l)
{
     int decimal {0};
     ...//conversion
     return decimal;
} 
int bin2dez01 = "110011"_b;    //<--- string "110011" to const char *s, size_t l ??????
std::cout << bin2dez01 << "\n";
main.cpp

...
int operator "" _b (const char * s, size_t l)
{
     int decimal {0};
     ...//conversion
     return decimal;
} 
int bin2dez01 = "110011"_b;    //<--- string "110011" to const char *s, size_t l ??????
std::cout << bin2dez01 << "\n";
int bin2dez01=“110011”\u b// 
operator”“
将程序源中的字符串文字转换为另一种类型,在这种情况下,
int
基于解析二进制数的字符串表示形式

C++中字符串字的类型是 const char */COD>——一个指向字符串的内容的“代码> char < /Cord>”数组的常量指针。您还可以得到一个

size\u t
,它告诉您字符串的长度,因为您无法仅从指针判断

(C和C++中的字符串标准是把空字节<代码> 0 标记字符串的结尾,但发现这不是免费的,有时它们被错误地忽略掉,所以指针和长度的传递总是比较容易的。 标准字符串类std::string

可以从字符串文本构建,但与C#和Java等语言不同,它们绝对不是同一类型。您经常会产生错觉,因为
std::string
具有各种转换运算符和重载,允许您以您期望的方式或多或少无缝地处理字符串文本


总之,没有进行转换-字符串文字实际上是一个
const char*
,而
size\u t
告诉您它有多长。

确切地说,字符串文字的类型是const char[N],其中N是字符串的大小,以执行狭义编码的代码单元为单位,包括空终止符。这很重要,因为它允许使用大小创建std::string,即不通过查找空字符来计算长度。