菜鸟学习中的数据类型转换总结

       断断续续学习C++有一段时间了,在学习和编写自己的小工具过程中也遇到了很多问题,今天终于可以写一篇自己的原创文章了,也不算是原创,是对自己前面编程过程中的小问题的汇总吧,现在整理下来供自己以后翻阅还有像我一样的菜鸟们参考。

 

      进入正题,首先要用格式转换会用到一些常用的宏,一般来说,需要在程序中添加这个头文件引用#include<atlconv.h>用到这个头文件主要是为了使用以下几个宏:
    USES_CONVERSION
    A2W
    W2A
    T2CW
    T2CA
     也就是编码转换的几个宏,它的内部封装了MultiByteToWideChar和WideCharToMultiByte函数。

 

     下面是我做小工具以来遇到的一些数据类型转换:

 

1.       cstring转char

USES_CONVERSION;

char*path = T2A(inPath.GetBuffer(0));

       inPath.ReleaseBuffer();

 

2.       CString转到string

USES_CONVERSION;

stringoutpath = W2CA((LPCWSTR)filePath);

 

    (注意:USES_CONVERSION这一句在一个类文件中只出现一次就可以,第二次用到格式转换功能时不需要重复写。并且注意它是在堆栈上分配空间的,也就是说你在你在函数未结束就不会被释放掉。所有要注意不要在一个函数中用while循环执行它,不然栈空间就马上会分配完(栈空间一般只有2M,很小)。)

 

3.       String转Char*

constchar* a = ((*it)->dd).c_str();

 

    (这个问题是我在用VECTOR进行数据输出的时候遇到的,我在VECTOR中定义的string类型的数据无法通过ofstream输出到txt文本中,后来我二姨夫帮我改代码进行了这样一个转换就可以输出了,这个地方后续继续研究一下造成原因。)

 

4.       double转string

doubledx= (*it)->xx;

      char b[20];

sprintf(b,"%.8lf",dx);

 

    (这个也是在vector输出时遇到的问题,直接通过ofstream输出数据到文本文件中数据自动存储成了科学计数法的形式,没办法只好在输出之前做一个格式转换。)

 

5.       CString转double

CString x1 = sx.Left(pos);

double xx = (float)atof((char*)(LPTSTR)(LPCTSTR)x1);


    哈,目前就找到用过的这么几个,后续陆续补充吧。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值