草庐IT

CHAR_LENGTH

全部标签

c++ - 从 ‘const char*’ 到 ‘unsigned char*’ 的无效转换

一个简单的C++代码:intmain(){unsignedchar*t="123";}使用g++编译时出现以下错误:invalidconversionfrom‘constchar*’to‘unsignedchar*’[-fpermissive]为什么? 最佳答案 在C++中,字符串文字具有常量字符数组的类型。例如字符串文字"123"的类型为constchar[4]。在具有罕见异常的表达式中,数组被转换为指向其第一个元素的指针。所以在这个声明中unsignedchar*t="123";初始化程序的类型为constchar*。没有从co

c++ - 为什么 std::u16string 比 char16_t 数组慢?

经过一些性能实验,似乎使用char16_t数组有时可以将性能提高40-50%,但似乎使用std::u16string而不进行任何复制和分配应该与C数组一样快。然而,基准测试显示相反。这是我为基准测试编写的代码(它使用GoogleBenchmark库):#include"benchmark/benchmark.h"#includestaticstd::u16stringstr;staticchar16_t*str2;staticvoidBM_Strings(benchmark::State&state){while(state.KeepRunning()){for(size_ti=0;i

c++ - 为什么 std::u16string 比 char16_t 数组慢?

经过一些性能实验,似乎使用char16_t数组有时可以将性能提高40-50%,但似乎使用std::u16string而不进行任何复制和分配应该与C数组一样快。然而,基准测试显示相反。这是我为基准测试编写的代码(它使用GoogleBenchmark库):#include"benchmark/benchmark.h"#includestaticstd::u16stringstr;staticchar16_t*str2;staticvoidBM_Strings(benchmark::State&state){while(state.KeepRunning()){for(size_ti=0;i

c++ - 为什么 C++ 不会打印 char 的内存地址,但会打印 int 或 bool?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Whyisaddressofchardatanotdisplayed?这是代码和输出:intmain(intargc,char**argv){boola;boolb;cout输出:a:0x28ac67的地址b的地址:0x28ac66c:0x28ac60的地址d:0x28ac5c的地址e的地址:我的问题是:char的内存地址在哪里?为什么不打印?谢谢。 最佳答案 C/C++中的字符串可以用char*表示,与&e的类型相同。所以编译器认为你正在尝试打印一个字符串

c++ - 为什么 C++ 不会打印 char 的内存地址,但会打印 int 或 bool?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Whyisaddressofchardatanotdisplayed?这是代码和输出:intmain(intargc,char**argv){boola;boolb;cout输出:a:0x28ac67的地址b的地址:0x28ac66c:0x28ac60的地址d:0x28ac5c的地址e的地址:我的问题是:char的内存地址在哪里?为什么不打印?谢谢。 最佳答案 C/C++中的字符串可以用char*表示,与&e的类型相同。所以编译器认为你正在尝试打印一个字符串

c++ - 为什么字符串文字只能在某些情况下隐式转换为 char*?

这个问题在这里已经有了答案:Whyispassingastringliteralintoachar*argumentonlysometimesacompilererror?(6个回答)关闭9年前.voidf(char*p){}intmain(){f("Hello");//OKautop="Hello";f(p);//errorC2664:'voidf(char*)':cannotconvertparameter1//from'constchar*'to'char*'}代码使用VC++Nov2012CTP编译。§2.14.15StringLiterals,Section7Anarrows

c++ - 为什么字符串文字只能在某些情况下隐式转换为 char*?

这个问题在这里已经有了答案:Whyispassingastringliteralintoachar*argumentonlysometimesacompilererror?(6个回答)关闭9年前.voidf(char*p){}intmain(){f("Hello");//OKautop="Hello";f(p);//errorC2664:'voidf(char*)':cannotconvertparameter1//from'constchar*'to'char*'}代码使用VC++Nov2012CTP编译。§2.14.15StringLiterals,Section7Anarrows

java - 如何从 char 中减去字符 '0' 将其更改为 int?

此方法适用于C、C++和Java。我想知道它背后的科学原理。 最佳答案 char的值可以是0-255,其中不同的字符映射到这些值之一。数字也按'0'到'9'的顺序存储,但它们通常也不作为前十个char存储值(value)观。也就是说,字符'0'没有0的ASCII值。0的char值几乎总是\0空字符。在不了解ASCII的情况下,从任何其他数字字符中减去'0'字符将导致原始字符的char值非常简单。所以,这是简单的数学:'0'-'0'=0//Charvalueofcharacter0minuscharvalueofcharacter0/

java - 如何从 char 中减去字符 '0' 将其更改为 int?

此方法适用于C、C++和Java。我想知道它背后的科学原理。 最佳答案 char的值可以是0-255,其中不同的字符映射到这些值之一。数字也按'0'到'9'的顺序存储,但它们通常也不作为前十个char存储值(value)观。也就是说,字符'0'没有0的ASCII值。0的char值几乎总是\0空字符。在不了解ASCII的情况下,从任何其他数字字符中减去'0'字符将导致原始字符的char值非常简单。所以,这是简单的数学:'0'-'0'=0//Charvalueofcharacter0minuscharvalueofcharacter0/

c++ - g++ 将返回的字符串文字视为 const char 指针而不是 const char 数组

当从一个应该使用g++(版本4.7.3)执行隐式转换的函数返回字符串文字时,我看到了一些奇怪的行为。谁能解释为什么下面的代码:#includeclassTest{public:templateTest(constchar(&foo)[N]){printf("Templateconstchararrayconstructor\n");}Test(char*foo){printf("char*constructor\n");}};Testfn(){return"foo";}intmain(){Testt("bar");Testu=fn();return0;}产生结果:Templatecon