有关纯 C/C++中 对 由 Unicode向ASCII 转换的问题

lazy2008 2004-01-15 02:15:23
先向各位道谢了。
我在调用 ifstream 类打开文件的时候,需要处理 文件名为中文的情况。
所以,我就调用了 函数 wcstombs(char *, const wchar_t *, size_t) 来对文件名进行转换。但却不能成功的执行。
不知道问题出在那里。
请诸位高手赐教!
...全文
255 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lazy2008 2004-01-16
  • 打赏
  • 举报
回复
哦,我刚才试验了一下的,正如 “gieroland(咏咏张咏咏(抵制日货))” 所说的,char * 可以被赋予中文字符的。

char* pFileName;
pFileName="F:\\Project\\简洁型\\1.3.46.670589.11.6.1.1.1.0.0.1";
ifstream _if( pFileName,ios_base::binary | ios_base::in );
感谢 “gieroland(咏咏张咏咏(抵制日货))”的 提示!

但是,我现在很想利用函数 wcstombs(char *, const wchar_t *, size_t) ,把 wchar_t 类型转换成 char类型,但该函数却不能正常执行。
非常头疼!
playmud 2004-01-16
  • 打赏
  • 举报
回复
和操作系统有关吗?
gieroland 2004-01-16
  • 打赏
  • 举报
回复
这个不应该是Unicode向ASCII 转换的问题
猜想你即使不转化应该也可以调用ifstream 类打开文件,一个中文两位,对于字符串比较来说它可以不管你这两位到底是合成一个中文字符还是分开的两个ASCII字符。
所以你只需要把带路径的文件名(char*)得到之后调用ifstream 类的方法就可打开文件。
lazy2008 2004-01-16
  • 打赏
  • 举报
回复
是函数 wcstombs(char *, const wchar_t *, size_t) 不能正常执行。
wchar_t 的实参是一个带路径的文件名,其中,路径是带中文的,当调用这个函数后, char*
的值却在中文那里被截断了。。。。
sandrowjw 2004-01-16
  • 打赏
  • 举报
回复
你确信是unicode吗?如果是gb_2312用wcstombs是没用的。还有你说的截断,看不见这些字符不一定是截断了,也请确认一下,最好把2进制值获得,否则很难确认问题的。
xilihuala 2004-01-16
  • 打赏
  • 举报
回复
关注ing...
Jinhao 2004-01-16
  • 打赏
  • 举报
回复
wchar_t *wch=L"F:\\Project\\简洁型\\1.3.46.670589.11.6.1.1.1.0.0.1";
char* ch=new char[256];
wcstombs(ch,wch,256);
cout<<ch<<endl;
这样行不??
lazy2008 2004-01-16
  • 打赏
  • 举报
回复
函数 wcstombs(char *, const wchar_t *, size_t) ,当参数“const wchar_t *”含有中文时,为什么输出参数只返回应返回值的一小部分(遇到中文后就被截断了。。。)
boxban 2004-01-15
  • 打赏
  • 举报
回复
那块不能成功的执行?
wcstombs(char *, const wchar_t *, size_t)
还是 用 ifstream 类打开文件的时候?

你是如何得到wchar_t型的文件名的?

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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