【发布时间】:2010-02-09 07:16:59
【问题描述】:
我正在使用 Visual Studio .NET 2003,我正在尝试将纯 ANSI 字符编写的程序转换为独立于 Unicode/多字节字符。
程序有一个pcap_loop的回调函数,叫做“got_packet”。它被定义为
void got_packet(u_char *user, const struct pcap_pkthdr *header, const u_char *cpacket)
{
USES_CONVERSION;
_TUCHAR *packet;
packet = A2T(cpacket);
...
}
但是,我收到错误消息
error C2440: 'type cast': cannot convert from 'const u_char *' to 'ATL::CA2WEX<>'
如何解决这个问题?
【问题讨论】:
-
ANSI 什么? ANSI 是一个标准机构,你的意思是 ASCII 吗?
-
嗯,具体术语我不是太熟悉,但我的意思是ANSI字符串,在MSDN文章中提到:msdn.microsoft.com/en-us/library/87zae4a3(VS.71).aspx基本上,程序使用了char、char *、unsigned char和 unsigned char * 用于每个字符串/数组等,以及 strstr 和 strlen 等字符串函数,不关注 Unicode 字符。
-
@paxdiablo:“ANSI”也是 Windows-1252 字符集的别名。 alanwood.net/demos/ansi.html
-
不!假设 ANSI=CP-1252 是错误的。请参阅microsoft.com/typography/unicode/cs.htm:“每个 ANSI 字符集的上 128 位不同”
-
ANSI 已成为任何 8 位代码页的通用术语。 “多字节字符集”是正确的术语。 ANSI 更容易从舌头上滚下来。
标签: c++ visual-c++ unicode multibyte