转:http://blog.sina.com.cn/s/blog_58e19ae7010003jt.html

正确方法:
CString m_Head;
char *codefile;
codefile=(LPSTR)(LPCTSTR)m_Head;//正确,想办法去掉后缀
补充:
int fnlen = m_Head.GetLength() ; //strcspn(str,".");
codefile=new char[fnlen+4];
codefile=(LPSTR)(LPCTSTR)m_Head;//正确,想办法去掉后缀
for(int i=fnlen-1;i>3;i--)//去掉文件后缀.pas
{if((codefile[i]=='s')&&(codefile[i-1]=='a')&&(codefile[i-2] 
=='p')&&(codefile[i-3]=='.'))
{codefile[i]=codefile[i-1]=codefile[i-2]=codefile[i-3]=' ';
break;}
}
错误方法1:int fnlen = m_Head.GetLength() ; //strcspn(str,".");
codefile=new char[fnlen+4];
int i=0;//名字不正确,但是不为空。
for (; i<fnlen;i++)
codefile[i]=m_Head[i];
codefile[fnlen]=0;
错误方法2:
strcpy(codefile,m_Head.GetBuffer(fnlen)); //这句会让程序意外中止!
m_Head.ReleaseBuffer(fnlen);
错误方法3:
strcpy(codefile,m_Head);//这句也会让程序意外中止!
错误方法4:
codefile=m_Head.GetBuffer(fnlen);//可以执行,但codefile的值为空

参考资料:
CString转化为char? 
CString::GetAt 这个返回一个 char

如果是要char * 
可以用CString:Getbuffer 这个返回一个 char * 
其实还可以强制转化: 
LPCTSTR pch; 
CString str("123456"); 
pch = (LPCTSTR)str; 
上面的代码实际上就是先让系统执行了一次强制转化的结果,所以其实有点多此一举了…… 
但是这样做更安全一些,因为char *pBuffer = (LPSTR)(LPCTSTR)str;这样转换,只是让char指针指向了ctring的内存地址,如果对char进行了写操作的话,因为跨越了cstring的封装,有可能导致cstring对象的混乱,所以重新copy一个新的给char指针,可以做到更安全! 
如果只读不写,用char *pBuffer = (LPSTR)(LPCTSTR)str;就够了!

把CString转化为char*的更多相关文章

  1. MFC中CString转化为char*

    char* convertCStringToChars(CString string) { int nLength=string.GetLength(); ]; memset(c,,nLength+) ...

  2. mfc中CString转化为string的方法

    LL(1)分析法实验的mfc做到最后因为CString转化为string的问题卡了一个多小时,也是惨,网上各种方法找过都不行.幸亏最后还是找到几行代码搞定了.特此mark一下. USES_CONVER ...

  3. CString转换成char*

    CString转换成char* :charSource = (char*)strSource.GetBuffer(0); 法2:charSource = (char*)strSource.GetBuf ...

  4. 获取当前的时间,转化为char[]格式unix时间戳

    /* 在这个程序当中实现获取当前的unix时间戳 转化为char[] */ #include<stdio.h> #include<stdlib.h> #include<t ...

  5. CString 转换成 char *

    最近用到CString类,转换成 char * 类型,下面介绍用法: 一.CString 和 LPSTR 转换: CString转换成LPSTR: 方法一:CString server; LPSTR ...

  6. CString转换为const char*

    CString str=_T("这是我的测试程序.");// 先得到要转换为字符的长度const size_t strsize=(str.GetLength()+1)*2; // ...

  7. sprintf将CString转换成char[]

      在MFC中使用sprintf()函数将CString转换成char[]时,char[]只接受第一个字符 使用的是VS2008 CString name;dbName="test" ...

  8. 在Linux下使用sprintf代替atoi实现整型转化为char*

    程序中需要用到将整型转化为char*类型,然后将两个char*类型的变量拼接.将整型转化为char*自然想到了itoa函数: 头文件:#include <stdio.h> char *it ...

  9. 终于搞定在VS2010中将CString转换为const char*

    最近碰到了CString 转 const char *的问题. 以前只要简单的一个强制转换就OK了,可现在是不行了,搜索了很多资料,终于搞定,主要是Unicode和ANSI的问题,只要做一个转换就可以 ...

随机推荐

  1. Junit4与junt3并存时产生的问题

    目前的项目里用junit写单元测试,使用的是junit4,由于大部分开发之前使用的都是junit3,对junit4还不是很熟悉,所以出现了junit3和4混合使用的情况,导致发生了一些问题,这里列举一 ...

  2. C++可调用对象与函数表

    c++的可调用对象 有 函数 函数指针 lambda表达式 bind的对象 重载了函数调用运算符的类 如何调用? 函数调用 void afuncToCall() { cout << &qu ...

  3. 戴尔 Latiteude E7240 i7-4600U

    一.鲁大师各项数据 二.内存条 三.电池损耗 四.跑分

  4. 使用jsonschema2pojo-maven-plugin 插件根据json文件生成代码

    jsonschema2pojo 是一个不错的工具,可以帮助我们快速的根据json 文件生成pojo代码,提高开发效率,以下为简单的 使用maven 插件进行代码生成 使用maven 插件配置 < ...

  5. 转 HTTP.SYS 详解

    http.sys 是一个位于Win2003和WinXP SP2中的操作系统核心组件, 能够让任何应用程序通过它提供的接口,以http协议进行信息通讯. 温馨提示:如果用户不慎删除了该驱动文件,不用担心 ...

  6. Python学习思维导图

     刚学习Python时,边学边总结的,采用思维导图的形式, 适合回顾使用.内容参考<Python:从入门到实践>一书.   再给出一张Datacamp网站上的一张关于Python基础的总结 ...

  7. C#对Jason序列化匿名对象

    引用: using System.Web.Script.Serialization; 代码: var resp = new { flag = false, url = ConfigReader.Log ...

  8. 【转】让开发变得简单一点- Visual Studio 2010几个让人印象深刻的新功能

    原文网址:http://xhinker.blog.51cto.com/640011/313055/ 引言 "我们的目标,不仅仅是做出几个新功能,而是要回答一个问题:'如何让现在的开发人员生活 ...

  9. sublime 下面开发

    sublime 下面开发 开发 ptyon 简单环境 1. 下载sublime 3 https://download.sublimetext.com/Sublime%20Text%20Build%20 ...

  10. Webpack-simple cross-env 不是内部或外部命令问题处理

    本文转载自:https://www.cnblogs.com/stono/p/6984222.html Webpack-simple cross-env 不是内部或外部命令问题处理 学习了:https: ...