首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于类型转换的有关问题,

2012-02-13 
关于类型转换的问题,急啊~~想在列表框中添加d- name,它是LPCTSTR类型,但是Addstring()函数的参数是char*

关于类型转换的问题,急啊~~
想在列表框中添加d-> name,它是LPCTSTR类型,但是Addstring()函数的参数是char   *类型,
我怎么样才能正确的输出,下面两种写法编译都通不过:
m_devComboBox.AddString(d-> name);
m_devComboBox.AddString(static_cast <char   *>   (d-> name));
帮帮我,谢谢大家!

[解决办法]
1

LPCTSTR lp;
char *p = (LPSTR)lp;

2
如果定义了UNICODE,LPCTSTR实际上变成了unsigned short
MyConvertToChar()
{
USES_CONVERSION;
LPCTSTR lpsz = L "23456 ";
char* lpszT = W2CA(lpsz);
}

[解决办法]
ascii编码下下直接赋值strcpy
unicode下用mbstostr


[解决办法]
LPCTSTR lpt = d-> name;
char * t=(char*)lpt;

[解决办法]
直接强制转换就行了! 如下:

#include <iostream>
#include <windows.h>

using namespace std;

void AddString(const char *str)
{
cout < < str < < endl;
}

int main()
{
LPCTSTR lpc = "甘 ";
AddString(lpc);

return 0;
}
[解决办法]
你可能没包含文件: <windows.h>
[解决办法]
这个问题, 我的经验是. 你首先要查看一下工程的属性, 确认一下使用了什么字符集. 可能的选项通常有两个: UNICODE 或 MBCS .

很大的可能你是选择了 UNICODE. 现在假设你的确是 UNICODE

那么, 你需要这个函数 MultiByteToWideChar . 一个类似的代码大致如下, 你参考下:

const unsigned int length = 256;
WCHAR buffer[length];
MultiByteToWideChar(CP_ACP, 0, node-> name().c_str(), -1, buffer, length);

这里的重点, 我觉得在于 LPCTSTR 到底是什么类型. 它根据你工程的字符集选项, 在预处理阶段被确定出来. UNICODE 对应 wchar_t 版本, MBCS 对应 char 版本. 你在这个方向上下手比较好.
[解决办法]
楼上的办法更加保险一点。
如果工程是Unicode的话,直接将LPCTSTR转成char *会导致很多错误。比如字符串被截断等等
[解决办法]
想在列表框中添加d-> name,它是LPCTSTR类型,但是Addstring()函数的参数是char *类型,
我怎么样才能正确的输出,下面两种写法编译都通不过:
m_devComboBox.AddString(d-> name);
m_devComboBox.AddString(static_cast <char *> (d-> name));
---
CString temp;
temp.Format( "%s ", d-> name);
m_devComboBox.AddString(temp);
试 一下
[解决办法]
如果使用unicode编译需要转化字符串编码
非unicode则不需要。
[解决办法]
G_ZhaoKun() ( ) 信誉:100 Blog 加为好友 2007-5-11 0:06:26 得分: 0

的好使~~

热点排行