VS2008环境下,MFC中多字节与unicode下的ftp连接

blueapples0604 2011-09-28 03:38:31
在多字节下,连接ftp正常,改成unicode后,在m_pCtrlRxarch->ReadString(m_retmsg)处卡了约几十秒,返回false,ReadString函数是afx.h中的CArchive类中的
http://msdn.microsoft.com/zh-cn/library/dybsewaf%28v=VS.80%29.aspx
这里说“如果已定义 _UNICODE,则下列对 CArchive 对象的调用无效”

LPTSTR ReadString(_Out_z_cap_(nMax+1) LPTSTR lpsz, _In_ UINT nMax);
BOOL ReadString(CString& rString);
ReadString在afx.h有以上2个重载函数,

不知道有没有人遇到过类似的问题,或者哪位达人懂这个,求指点~
...全文
214 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BrillianceRen 2011-09-29
  • 打赏
  • 举报
回复
ReadString的参数改成LPTSTR试试
blueapples0604 2011-09-29
  • 打赏
  • 举报
回复
3楼正解了,解决了= =
shuyingxishu 2011-09-28
  • 打赏
  • 举报
回复
lz你太呆了,怎么这个问题都不知道呢,你木有发现么,在BOOL ReadString(CString& rString);上面还有个read函数,你可以用那个函数读取回复,好呆啊你,如果不知道读取的长度,可以设为1,循环读取一直到结尾。这样你可以自己决定收取char型还是wchar型了,呆死了你
疯魔症 2011-09-28
  • 打赏
  • 举报
回复
你的pCtrlRxarch是什么类型的,还有m_retmsg是什么类型的.
CArchive必须处理ASCII字符,你需要自己转换为unicode。
"CArchive允许以一个永久二进制(通常为磁盘存储)的形式保存一个对象的复杂网络,它可以在对象被删除时,还能永久保存。可以从永久存储中装载对象,在内存中重新构造它们。使得数据永久保留的过程就叫作“串行化”。
可以把一个归档对象看作一种二进制流。象输入/输出流一样,归档与文件有关并允许写缓冲区以及从硬盘读出或读入数据。输入/输出流处理一系列ASCII字符,但是归档文件以一种有效率、精练的格式处理二进制对象。
必须在创建一个CArchive对象之前,创建一个CFile对象。另外,必须确信归档文件的装入/存储与文件的打开模式是兼容的。每一个文件只限于一个活动归档文件。"
疯魔症 2011-09-28
  • 打赏
  • 举报
回复
你自己写的ftp协议的程序,换成unicode出错是么。
unicode和多字符集,编程区别很大的。你看看相关资料,对应的函数什么的改改。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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