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

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

但是复制过去的在pText3是乱码!
请问要如何处理!
...全文
84 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
它们是什么类型的?

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧