事实是这些:
>语言: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/98 / Me感兴趣?然而,这些东西进行了混乱的新手.
这里是牛肉,在Windows中没有名为CreateDirectory的功能,有一个名为CreateDirectoryW的UNICODE函数和一个名为CreateDirectoryA的ANSI函数.宏CreateDirectory将根据您定义的编译器选项转换为CreateDirectoryW或CreateDirectoryA.如果最终使用CreateDirectoryW(如你所知道的那样),则必须将Unicode字符串传递给它,如果使用CreateDirectoryA,则传递一个正常的ASCII字符串.
在你的情况下,最简单的事情是忘记所有这一切,直接调用CreateDirectoryA.
CreateDirectoryA("c:\\some\\directory",NULL);
为什么在C中创建目录很难?我会猜测,因为在70年代,当C是新的,并不是每个操作系统都有目录,所以这个东西从来没有成为语言标准.