Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获得正确的案例工作目录? 为了更好地熟悉C++,我正在重新编写一个旧的大学操作系统任务:编程自己的shell。我正在使用各种我从未知道存在的Windows.h。到目前为止,我已经取得了很好的进展,但是我注意到了一些关于我的cd实现和我从getcwd返回的工作目录的信息_C++_Winapi - Fatal编程技术网

获得正确的案例工作目录? 为了更好地熟悉C++,我正在重新编写一个旧的大学操作系统任务:编程自己的shell。我正在使用各种我从未知道存在的Windows.h。到目前为止,我已经取得了很好的进展,但是我注意到了一些关于我的cd实现和我从getcwd返回的工作目录的信息

获得正确的案例工作目录? 为了更好地熟悉C++,我正在重新编写一个旧的大学操作系统任务:编程自己的shell。我正在使用各种我从未知道存在的Windows.h。到目前为止,我已经取得了很好的进展,但是我注意到了一些关于我的cd实现和我从getcwd返回的工作目录的信息,c++,winapi,C++,Winapi,我的cd命令执行一些错误检查,但最终归结为chdir(path)。假设我在C:\并且存在一个文件夹文件夹。如果我使用chdir(“folder”)然后稍后调用getcwd(dir,FILENAME\u MAX)时,我将得到字符串C:\folder,而不是大小写正确的字符串C:\folder。如何在每个文件夹都有适当大小写的情况下检索工作目录 注意:当我第一次启动shell并运行pwd命令(从getcwd调用中单独打印dir)时,我得到一个正确大小写的路径。一旦我开始更改工作目录,那么大小写总是与

我的
cd
命令执行一些错误检查,但最终归结为
chdir(path)
。假设我在
C:\
并且存在一个文件夹
文件夹
。如果我使用
chdir(“folder”)
然后稍后调用
getcwd(dir,FILENAME\u MAX)
时,我将得到字符串
C:\folder
,而不是大小写正确的字符串
C:\folder
。如何在每个文件夹都有适当大小写的情况下检索工作目录


注意:当我第一次启动shell并运行
pwd
命令(从
getcwd
调用中单独打印
dir
)时,我得到一个正确大小写的路径。一旦我开始更改工作目录,那么大小写总是与我的字符串匹配,而不是实际的文件夹大小写。

我认为Windows命令提示符只是使用
GetLongPathName
,它返回带有适当大小写的路径(但是,它不会更改驱动器号的大小写)

如果需要大写的驱动器号,则
GetShortPathName
函数将返回驱动器号大写的短路径。然后,您可以将此短路径传递到
GetLongPathName
,这将把它转换为正确大小写的长路径,但这不是cmd所做的


您也可以使用
SHGetFileInfo
,但这不是最简单的方法。

您可以使用
GetFullPathName
API函数返回当前目录的正确(大小写正确)路径,如下例所示:

TCHAR tchPath[MAX_PATH];
GetFullPathName(TEXT("."), MAX_PATH, tchPath, NULL);

可能不是解决方案,但不推荐使用
chdir
getcwd
。正确的版本是
\u chdir
\u getcwd
;不过,一般来说,我不建议在Windows上使用POSIX。顺便说一句,Windows不使用区分大小写的路径。我知道它不需要区分大小写的路径,但为了真正挑战自己,我正在关注细节,并让
cmd.exe
设置标准。它的提示是正确的,因此我的将是。