返回信息流文件名字符串是unicode的,我先将其转为多字节编码
...
WideCharToMultiByte(CP_ACP, 0, m_impl, m_impl.GetLength(), pBuf, nBufSize, NULL, NULL);
...
但其中有一个特殊字符转换失败,导致文件无法打开。有什么办法吗?前提是要使用ofstream,不能用windows的API打开文件。
这是一条镜像帖。来源:北邮人论坛 / cpp / #75076同步于 2013/11/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
ofstream打开文件失败
disk
2013/11/7镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
文件名字符串是unicode的?
我印象中,unicode是编码规范才对,具体的实现可以用utf8或者gbk等实现编码,文件名字符串是unicode的意思不是很懂。借楼学习。
就是utf16,我表述不是很准确
【 在 bswgd 的大作中提到: 】
: 文件名字符串是unicode的?
: 我印象中,unicode是编码规范才对,具体的实现可以用utf8或者gbk等实现编码,文件名字符串是unicode的意思不是很懂。借楼学习。
文件名应该是怎么来的。。如果是用utf16的话,就用wfstream,wchar_t 在windows用的就是utf16(严格的说是ucs2,不过也可以存储utf16编码)。
是吗?我好像就是这样用的,成功打开了呢?我的程序是弹出一个windows标准的文件选择窗口,选文件以后得到文件路径,是一个CString的字符串,然后传递给fstream,和你说的fstream(L"text.txt")应该是一样的吧?
【 在 a206206 的大作中提到: 】
: 编码会内部转换的。不过如果你用fstream(L"text.txt")这样是不可以的。