| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1437 人关注过本帖
标题:CString --->char *
只看楼主 加入收藏
银魂飞雪
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2006-10-23
收藏
 问题点数:0 回复次数:15 
CString --->char *

现在有一个函数,其参数必须是char *类型的
但是MFC中没有,怎样把CString的数据转换为char *类型的

谢绝以下方法,因为我试过,不行!
谢谢!
方法一,使用强制转换。

CString theString( "This is a test" );
LPTSTR lpsz =(LPTSTR)(LPCTSTR)theString;

  方法二,使用strcpy。

CString theString( "This is a test" );
LPTSTR lpsz = new TCHAR[theString.GetLength()+1];
_tcscpy(lpsz, theString);

  需要说明的是,strcpy(或可移值Unicode/MBCS的_tcscpy)的第二个参数是 const wchar_t* (Unicode)或const char* (ANSI),系统编译器将会自动对其进行转换。

  方法三,使用CString::GetBuffer

CString s(_T("This is a test "));
LPTSTR p = s.GetBuffer();
// 在这里添加使用p的代码
if(p != NULL) *p = _T('\0');
s.ReleaseBuffer();

搜索更多相关主题的帖子: CString char 
2007-01-17 20:59
cz522321
Rank: 1
等 级:禁止访问
威 望:2
帖 子:569
专家分:5
注 册:2006-3-13
收藏
得分:0 
可以用别的办法,例如:
CString s( "abcd" );
LPTSTR p = s.GetBuffer( 10 );
strcpy( p, "Hello" );
s.ReleaseBuffer( );
这个就是你的第三个方法,是不是用的有问题!你试一下这个,用P来代替S.

2007-01-17 22:00
银魂飞雪
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2006-10-23
收藏
得分:0 
能不能解释一下是什么意思?
谢谢
2007-01-18 10:11
银魂飞雪
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2006-10-23
收藏
得分:0 
LPTSTR和CAHR *不是同一类型啊
我用了,但是不行
2007-01-18 10:12
银魂飞雪
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2006-10-23
收藏
得分:0 
cannot convert from 'wchar_t *' to 'char *'
显示是这样的
2007-01-18 10:14
radcat
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:306
专家分:45
注 册:2006-9-12
收藏
得分:0 
试一下这种笨方法行不行
CString sStr="今天是119号";
TCHAR tStr[128];
char *p;
strcpy(tStr,sStr);
for(int i=0;i<strlen(tStr);i++)
{
p[i]=tStr[i];
}
p[strlen(tStr)]=NULL;

2007-01-19 08:42
Bekky
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:354
专家分:0
注 册:2006-5-29
收藏
得分:0 

CString str;

(CHAR*)(LPCTSTR)str;


我的编译环境为WinXp + VC 6.0 http://blog..cn/yobo
2007-01-19 14:25
清澂居士
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:1237
专家分:7
注 册:2006-12-19
收藏
得分:0 
版主們都是高人啊```方法比我的簡便多叻```

佛曰:\"前世的500次回眸才换来今生的一次擦肩而过\".我宁愿用来世的一次擦肩而过来换得今生的500次回眸.
2007-01-19 15:42
dragonfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1024
专家分:0
注 册:2006-3-20
收藏
得分:0 
不会吧!?
CString str;
char *p;
p = str.GetBuffer(0);

这样可以啊,我刚测试过了

注:看看MSDN 中 CString类的成员函数就知道了

2007-01-19 15:51
银魂飞雪
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2006-10-23
收藏
得分:0 

我还没试,不过我想知道一个问题,怎么那么多人说.
CString str;

(CHAR*)(LPCTSTR)str;

我试了之后好像不行

2007-01-20 20:29
快速回复:CString --->char *
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026015 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved