一. 问题现象
char * pt = "China";
cout << setw(10) << pt <<endl; //指定输出宽度为10 输出字符串
编译会报如下警告:
二. 问题原因
翻译成中文的意思是“禁止将字符串常量转换为“char *”
三. 解决方法
第一种方法是:
char* name = (char*)"China";
第二种方法:
char const *name="China";
简单来说,在赋值时,左右两边的类型不同的话,编译器会implicit conversion来强制转换类型,赋值号右边的“China”是一个不变常量类型是const char,左边name是一个指针。如果强行赋值的话,那么编译器会将右边强制转化成一个指针类型,这种情况会使得程序在别的编译器可能会出现报错。
解决办法就是主动将右边转化成指针类型或者将左边转化成const不可修改。