在C++里,把常量指针(即指向长脸的指针)赋值给非常量指针时,会提示错误,这时候就需要用到const_cast,看下面的两个转换情形: int j = 0; const int i = j; int &k = const_cast<int &>(i); k++; printf("%d", i); string a = "123"; char *p = const_cast<char*>(a.c_str()); strcpy...
const_cast<char *>(a) 是c++中的语法。 将a转为 char* 类型。 const_cast 表示将a转化为非常量指针 多用来修饰 const属性的 (char*)a 表示将a转化为 char*类型 没有别的含义。
EX: const char* tmp = "tsinghua". string s = tmp; (2)string转换为const char*,利用c_str()或者data() EX: string s = "tsinghua"; const char*tmp = s.c_str(); const char *tmp = s.data(); 2. char*和const char*之间的转换 (1) const char*转化为char*,利用const_cast<char*> E...
如对于: const char * GetString(void); 如下语句将出现编译错误: char *str = GetString();//cannot convert from 'const char *' to 'char *'; 正确的用法是: const char *str = GetString(); b.如果函数返回值采用“值传递方式”,由于函数...
const_cast: 取消类型的const属性 voidf(constchar*str){char*a=const_cast<char*>(str);cout<<"a:"<<a<<endl;} as_const: 返回const引用的版本 stringstr{"c++"};conststring&constStr{as_const(str)};cout<<"constStr:"<<constStr<<endl;...
是一个字符指针(char*)赋给了一个字符型(char)变量,导致报错。例如:string s = "abc";char* c = s.c_str();这时会报错:invalid conversion from `const char*' to `char*'解决方法: char* c = const_cast<char *>(s.c_str());...
即使从 Derived* 到Base* 的转换可以安全地使用 static_cast 完成(因为存在继承关系),依然可以使用 reinterpret_cast 来强制执行,但是不推荐这么做。 C:不相关类型的指针之间的转换 int* iptr = new int(42); // 转换 int* 到 char*,可能为了操作内存块的单个字节 char* cptr = reinterpret_cast<char*>(...
(1)char*转化为string,直接赋值即可。 ? 1 2 char* p ="tsinghua"; string str = p; (2)string转化为char*,走两步,先是string->const char*,然后是const char*->char* ? 1 2 string str ="tsinghua"; char* p =const_cast<char*>(str.c_str()); ...
5) string转char*:调用string对象的c_str函数或data函数或copy函数。 6) char[]转char*:直接赋值即可。 1. 2. 3. 4. 5. 6. 总结如下: A. 变成string,直接赋值。 B. char[]变成别的,直接赋值。 C. char*变const char*容易,const char*变char*麻烦。<const_cast><char*>(const char*); ...
const char *str="no way"; //定义一个字符串常量 char *tmp=const_cast<char *>(str); //定义一个指向上面字符串的变量 这里的const_cast<char *>的作用,只是可以在char *tmp前不加const,但tmp指向的还是常量区 tmp[0]='f'修改常量区,出错 ...