2914|6

62

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

CString 转换成char*问题 [复制链接]

CString c_sTime("010904");
CString hour =c_sTime.Left(2);
int num=atoi((char*)(LPCTSTR)hour);
转换后得到的num为0为什么;那一步出错了

最新回复

memset(cLog,0,length+1);   详情 回复 发表于 2008-6-26 15:53
点赞 关注

回复
举报

65

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
CString c_sTime("010904");       
       int length=c_sTime.GetLength();
        BYTE *cLog=new BYTE[length+1];
        WideCharToMultiByte(CP_ACP, 0, (const unsigned short*)c_sTime,  
                -1, (char*)cLog, length+1, NULL, NULL);
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
atoi()的参数类型不匹配,需要如LS所说,将Uniocde转成ASNI
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

4
 
CString c_sTime("010904");
CString hour =c_sTime.Left(2);
char   *pstr =new  char [hour.GetLength()+1] ;
           char   *pstr =new  char [hour.GetLength()+1] ;
  for(int j=0;j   {   
                 *(pstr+j)=hour[j];   
  }
int num=atoi(pstr); //num为1了
刚从网上找的调试通过了。
但我还是不明白 int num=atoi((char*)(LPCTSTR)hour); 这样的强制类型转化结果为什么是0

 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
zhuyaqi2006你好以下是引用你的程序,调试出现的问题。
int length=c_sTime.GetLength();
        BYTE *cLog=new BYTE[length+1];
        WideCharToMultiByte(CP_ACP, 0, (const unsigned short*)c_sTime,  
                                -1, (char*)cLog, length+1, NULL, NULL);
        int num =atoi(cLog);
                num= num+8;

error C2664: 'atoi' : cannot convert parameter 1 from 'unsigned char *' to 'const char *'

cLog的类型为unsigned char*
 
 
 

回复

62

帖子

0

TA的资源

禁止发言

6
 
int length=c_sTime.GetLength();
char *cLog=new char [length+1];
WideCharToMultiByte(CP_ACP, 0, (const unsigned short*)c_sTime,  
-1, cLog, length+1, NULL, NULL);
你稍微改一下就可以了啊!
还有另外一中转换方法:
        int length=c_sTime.GetLength();
        char *cLog=new char[length+1];
        memset(cLog,0,length);
        for (int i=0;i         {
                cLog=c_sTime;
        }
你要是用
int num =atoi(cLog);
的话
完全没必要转换
直接用
int num =_wtoi(c_sTime);
就可以了

 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 5 楼 zhuyaqi2006 的回复:
int length=c_sTime.GetLength();
char *cLog=new char [length+1];
WideCharToMultiByte(CP_ACP, 0, (const unsigned short*)c_sTime,  
-1, cLog, length+1, NULL, NULL);
你稍微改一下就可以了啊!
还有另外一中转换方法:
int length=c_sTime.GetLength();
char *cLog=new char[length+1];
memset(cLog,0,length);
for (int i=0;i {
cLog=c_sTime;
}
你要是用
int num =atoi(…

memset(cLog,0,length+1);
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11:30
快来报名!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表