关于类型转换的问题,急啊~~
想在列表框中添加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
的好使~~