参数中有const时进行数据类型的转换问题-固定变量转常量

今天 晚上被数据类型转换的问题卡了很久,公司 用CPPIString类封装了std::string,用CPPIUString装了wstring。

问题的解决简化后如代码所下,

func(const CPPIUString& ustr)
{
CPPIString str;
str=const_cast<CPPIUString&>(ustr).ToString();//将固定变量变化常量
}


其它方法均不成功,将从网上摘抄const_cast()用法贴到下面

用法:const_cast (exdivssion)
该运算符用来修改类型的const或volatile属性。除了const 或volatile修饰之外, type_id和exdivssion的类型是一样的。
常量指针被转化成非常量指针,并且仍然指向原来的对象;
常量引用被转换成非常量引用,并且仍然指向原来的对象;常量对象被转换成非常量对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中的数据类型转换可以分为以下几种: 1. 隐式类型转换 隐式类型转换是由编译器自动进行的,无需程序员手动干预。例如,当一个int类型的变量与一个float类型的变量进行运算,编译器会将int类型隐式转换为float类型,以使它们类型一致。 2. 显式类型转换 显式类型转换是由程序员手动进行的,可以通过以下方式进行: - static_cast:用于基本类型之间的转换,例如将int类型转换为float类型。 - dynamic_cast:用于类之间的转换,例如将基类指针转换为派生类指针。 - const_cast:用于去除常量属性,例如将const int类型转换为int类型。 - reinterpret_cast:用于不同类型之间的转换,例如将指针类型转换为整数类型。 下面是一些常见数据类型之间的转换示例: 1. 整数类型之间的转换 ```cpp int a = 10; long b = a; // 隐式类型转换,将int类型转换为long类型 int c = static_cast<int>(b); // 显式类型转换,将long类型转换为int类型 ``` 2. 浮点数类型之间的转换 ```cpp float d = 3.14; double e = d; // 隐式类型转换,将float类型转换为double类型 float f = static_cast<float>(e); // 显式类型转换,将double类型转换为float类型 ``` 3. 字符类型之间的转换 ```cpp char g = 'a'; int h = g; // 隐式类型转换,将char类型转换为int类型 char i = static_cast<char>(h); // 显式类型转换,将int类型转换为char类型 ``` 4. 指针类型之间的转换 ```cpp int j = 10; int* pj = &j; void* pj_void = pj; // 隐式类型转换,将int*类型转换为void*类型 int* pj2 = static_cast<int*>(pj_void); // 显式类型转换,将void*类型转换为int*类型 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值