C++开发随机密码生成器报const char*转unsigned char错误如何解决
错误触发原因
- 字符串拼接方式错误:C++中字符串字面量无需用
+拼接,相邻书写即可自动合并。你使用+运算后,左侧字符串字面量退化为const char*指针,和右侧字符'"'做指针偏移运算,最终得到的const char*类型无法匹配数组元素unsigned char的类型要求,触发类型转换报错。 - 多字符常量非法:后续
<.>/?被包裹在单引号中,C++中单引号仅用于声明单个字符常量,包含多个字符时会触发「字符常量长度超出类型范围」的警告,同时代码中误写的逗号运算符会截断表达式,进一步加重类型不匹配问题。
修复方法
直接将整段字符集写在同一个双引号内,需要转义的双引号用\"表示即可,不需要拆分拼接。修复后完整代码如下:
#include <iostream> const unsigned char chars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890`~!@#$%^&*()-_=+[{]}\\|;:'\",<.>/? "; int main(){ std::cout << chars; return 0; }
内容的提问来源于stack exchange,提问作者DayDayNoBug
相关产品推荐
相关产品推荐

