精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>编码解码>>动态转换unicode字符和普通字符

主题:动态转换unicode字符和普通字符
发信人: jonathany()
整理人: wenbobo(2002-12-06 22:50:00), 站内信件
Sub:VC6.0的BUG吗?
以下是一个结构体,在VC6.0中
struct MenusIM
{
short No;
char Items[40];
char AlterMessage[80]; 
float DValue;
char txtFileName[20];

};
运行sizeof(MenusIM) 结果是148!
                    但是应该是146的呀?!
请高手指教!!!

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.185.21]
发信人: kentucky (older than the tree), 信区: C
标  题: Re: VC6.0的BUG吗?
发信站: 网易 BBS (Tue Apr 27 12:03:24 1999), 转信

【 在 jonathany (Jona) 的大作中提到: 】
: Sub:VC6.0的BUG吗?
: 以下是一个结构体,在VC6.0中
: struct MenusIM
: {
:       short No;
:       char Items[40];
:       char AlterMessage[80]; 
:       float DValue;
:       char txtFileName[20];

: };
: 运行sizeof(MenusIM) 结果是148!
:                     但是应该是146的呀?!
: 请高手指教!!!

如果你要保证结构的大小和你的定义一致的话,
定义
#pragma pack(1)
缺省的时候,VC的结构是按4个字节对齐的,因此为了处理其他结构时
得到高效率,在如上的pack(1)将按字节对齐方式给该结构定义后,
应该恢复缺省定义
#pragma pack()
即如下形式:

#pragma pack(1)
struct...
typedef ...(定义一个或多个你要按字节分配内存的结构)
#pragma pack()

--
※ 来源:.网易 BBS bbs.netease.com.[FROM: 202.104.64.36]
发信人: wingman (飞剑客), 信区: C
标  题: Re: VC6.0的BUG吗?
发信站: 网易虚拟社区 (Tue Apr 27 12:30:45 1999), 站内信件

【 在 jonathany (Jona) 的大作中提到: 】
: Sub:VC6.0的BUG吗?
: 以下是一个结构体,在VC6.0中
: struct MenusIM
: {
:    .......
可在Project->Setting->C/C++->Code Generation中设置

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.97.55]
发信人: smallboy (forfor), 信区: C
标  题: 关于unicode的转换
发信站: 网易虚拟社区 (Tue May  4 11:40:48 1999), 站内信件

如何在C程序中,动态的根据需要,进行ASCII与UNICODE之间的转换?

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.101.101.133]
发信人: haoler (昊子), 信区: C
标  题: Re: 关于unicode的转换
发信站: 网易虚拟社区 (Thu May  6 19:20:07 1999), 站内信件

【 在 smallboy (forfor) 的大作中提到: 】
: 如何在C程序中,动态的根据需要,进行ASCII与UNICODE之间的转换?

什么是unicode 的定义?
记得有一种编码,所有的8位字节排在一起,然后用7位去切。
是不是这样?如果这样编程到简单。

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.99.105.234]
发信人: ken_qian (<marquee>杀意隆), 信区: C
标  题: Re: 关于unicode的转换
发信站: 网易虚拟社区 (Thu May  6 19:22:18 1999), 站内信件

【 在 smallboy (forfor) 的大作中提到: 】
: 如何在C程序中,动态的根据需要,进行ASCII与UNICODE之间的转换?

The WideCharToMultiByte function maps a wide-character string 
to a new character string. The new character string is not ne-
cessarily from a multibyte character set. 

int WideCharToMultiByte(  UINT CodePage,         // code page
  DWORD dwFlags,         // performance and mapping flags
  LPCWSTR lpWideCharStr, // address of wide-character string
  int cchWideChar,       // number of characters in string
  LPSTR lpMultiByteStr,  // address of buffer for new string
  int cchMultiByte,      // size of buffer
  LPCSTR lpDefaultChar,  // address of default for unmappable 
                         // characters
  LPBOOL lpUsedDefaultChar   // address of flag set when default 
                             // char. used);

The MultiByteToWideChar function maps a character string to 
a wide-character (Unicode) string. The character string mapped 
by this function is not necessarily from a multibyte character 
set.

int MultiByteToWideChar(  UINT CodePage,         // code page
  DWORD dwFlags,         // character-type options
  LPCSTR lpMultiByteStr, // address of string to map
  int cchMultiByte,      // number of bytes in string
  LPWSTR lpWideCharStr,  // address of wide-character buffer
  int cchWideChar        // size of buffer);

抄了一段Winapi的说明。
wink

Ken
99/05/06
20:26
 


--
杀意隆象一匹寂寞的狼,对着寂寞的苍穹、寂寞的皓月,作他的寂寞长嚎。

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 210.175.4.210]

[关闭][返回]