加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 尝试创建目录,获取char *到LPCWSTR错误,愿意尝试另一个功能

发布时间:2020-12-16 03:36:23 所属栏目:百科 来源:网络整理
导读:我已经尝试过谷歌搜索,根据各种具体情况,有如此多的答案坦白地说,我比我开始时更加困难. 事实是这些: 语言:C/C++ 操作系统:Windows IDE:Visual Studio 2005 我试图从我的程序中的函数创建一个目录,使用CreateDirectory(在#include的Windows.h之后). 假定
我已经尝试过谷歌搜索,根据各种具体情况,有如此多的答案坦白地说,我比我开始时更加困难.

事实是这些:

>语言:C/C++
>操作系统:Windows
> IDE:Visual Studio 2005
>我试图从我的程序中的函数创建一个目录,使用CreateDirectory(在#include的Windows.h之后).
>假定第一个参数(一个路径)应该是一个char *.但是,当我尝试编译时,我得到以下错误:错误C2664:’CreateDirectoryW’:不能将参数1从“char *”转换为“LPCWSTR”
>我读过的是UNICODE和ANSI之间有一些问题.解决方案差异很大,我怕打破重要事情,或者做一些非常愚蠢的事情.
>我完全愿意使用任何其他方法创建一个新的目录,如果没有我找不到其他库存在的方式.
>我只是在comp sci中,坦白说,我不知道为什么很容易打开,关闭,编辑和以其他方式访问文件通过stdio,但做任何事情与目录(特别是使他们,并找出是否存在)是一个野鹅追逐通过互联网的街道.

请帮助我,以解决当前尝试在CreateDirectory或使用别的东西来创建一个目录.

谢谢!

解决方法

这是完全疯狂的由于Windows 95/8 / Me是ANSI操作系统,NT / XP / Vista等都是UNICODE操作系统,Microsoft拥有支持ANSI(正如它们所说的)和UNICODE的机制.所以如果你真的想要你可以编写一套支持这两个系统的代码,并且只需要为每个系统重新编译.

但谁又对Windows 95/98 / Me感兴趣?然而,这些东西进行了混乱的新手.

这里是牛肉,在Windows中没有名为CreateDirectory的功能,有一个名为CreateDirectoryW的UNICODE函数和一个名为CreateDirectoryA的ANSI函数.宏CreateDirectory将根据您定义的编译器选项转换为CreateDirectoryW或CreateDirectoryA.如果最终使用CreateDirectoryW(如你所知道的那样),则必须将Unicode字符串传递给它,如果使用CreateDirectoryA,则传递一个正常的ASCII字符串.

在你的情况下,最简单的事情是忘记所有这一切,直接调用CreateDirectoryA.

CreateDirectoryA("c:somedirectory",NULL);

为什么在C中创建目录很难?我会猜测,因为在70年代,当C是新的,并不是每个操作系统都有目录,所以这个东西从来没有成为语言标准.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读