大家帮我看看这个如何处理,在线等

feng8317 2008-04-02 11:02:22
我的环境设置是UNICODE的格式。
PSTR pStr
PTSTR pText3;
我想把pStr的内容复制到pText3,或者把pText3的内容复制pStr
例:
_tcscpy(pText3,pText2);

但是复制过去的在pText3是乱码!
请问要如何处理!
...全文
50 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
guogangj 2008-04-02
这是反过来的过程:

#ifdef UNICODE
dwSize = WideCharToMultiByte(CP_OEMCP, NULL, pText3, -1, NULL, 0, NULL, FALSE);
WideCharToMultiByte (CP_OEMCP, NULL, pText3, -1, pStr, dwSize, NULL, FALSE);
#else
lstrcpy(pStr, pText3);
#endif

假设 UNICODE定义了的话,_UNICODE也同时被定义,这里不作区分。
回复
Gavin001 2008-04-02
用WideCharToMultiByte和MultiByteToWideChar函数转换之后再copy
回复
feng8317 2008-04-02
这样可以实现的。谢谢。
楼上的兄弟,那我如果
PSTR pStr
PTSTR pText3;
pText3的内容复制pStr
例:
_tcscpy(pStr ,pText3);
要如何处置。
回复
gomoku 2008-04-02
If you are sure that all characters are ASCII base,
it is safe to use CString to do the nasty conversion, like:


PCSTR pStr;
PCTSTR pText3;
PCWSTR pTextw;

pStr = CStringA( pText3 );
pText3 = CString( pStr );
pTextw = CStringW( pText3 );
pTextw = CStringW( pStr );
...


(They are all const string, but you can const_cast or make copy to get a none const version)

However, in the case you have none ascii characters, i.e., pText3 = _T("Hello内容")
then the ascii version pStr will be truncated to "Hello??"

A safe way is to use WideCharToMultiByte() and [color=#008000]MultiByteToWideChar()
回复
guogangj 2008-04-02
oh,不好意思,发现多打了一个反斜杠……
回复
guogangj 2008-04-02
这个处理应该类似这样:
#ifdef UNICODE
dwSize = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, pStr, -1, NULL,0);\
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, pStr, -1, pText3, dwSize);
#else
lstrcpy(pText3, pStr);
#endif

我喜欢用Win32 API,呵呵。
回复
txk1452 2008-04-02
UNICODE 下PSTR是char *,PTSTR是wchar_t *,所以会出错
先用WideCharToMultiByte转换然后再复制
回复
mxm324 2008-04-02
用用_T()这个宏看看
回复
ouyh12345 2008-04-02
PSTR、PTSTR
它们是什么类型的?
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-04-02 11:02
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……