const char*类型问题

麦田追风 2010-01-11 01:39:52
我要打开一个文件,传入一个文件路径,例如“\My Documents\file.txt”
我自己写的函数为:OpenFile(const char* fileName)
但穿进去的参数fileName出现一个字符分配两个字节的
也就是说fileName[0]是‘\’,fileName[1]是'',fileName[2]是'M',fileName[3]是''

一般情况下一个字符只分配一个字节,我现在要把fileName转为普通情况下一个字符占一个字节的而且要能支持中文
我用std::string s(fileName);只能取第一个字符,也就是s的值为"\"

请问我能怎么转,敬请指导。
...全文
124 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
麦田追风 2010-01-11
  • 打赏
  • 举报
回复
fileName是w_char*类型
麦田追风 2010-01-11
  • 打赏
  • 举报
回复
问题已解决,谢谢捧场
DWORD num = WideCharToMultiByte(CP_ACP,0,fileName,-1,NULL,0,NULL,0);
char *fName = (char*)calloc(num,sizeof(char));
memset(fName, 0, num*sizeof(char));
WideCharToMultiByte(CP_ACP,0, fileName, -1, fName, num,NULL,0);
  • 打赏
  • 举报
回复
“\My Documents\file.txt”

你这个应该是宽字符,用WideCharToMultiByte转成普通的ASCii
麦田追风 2010-01-11
  • 打赏
  • 举报
回复
补充:const char*可以改为char*
ysuliu 2010-01-11
  • 打赏
  • 举报
回复
w_char

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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