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

前端之家收集整理的这篇文章主要介绍了c – 尝试创建目录,获取char *到LPCWSTR错误,愿意尝试另一个功能前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经尝试过谷歌搜索,根据各种具体情况,有如此多的答案坦白地说,我比我开始时更加困难.

事实是这些:

>语言: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:\\some\\directory",NULL);

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

猜你在找的C&C++相关文章