繁体   English   中英

c++ - _mkdir 给出错误的错误窗口

[英]c++ - _mkdir giving false errors windows

嗨,我正在尝试使用此代码在 Windows 中创建一个目录

标题

#include <direct.h>

脚本

int main() {
    string local = "C:/Program Files (x86)/Mail";   

    try
    {
        _mkdir (local.c_str ());
        cout << "It is made?";
    }

    catch(invalid_argument& e)
    {
        cout << e.what () << " " << (char*) EEXIST;
        if (e.what () == (char*) EEXIST) {
            cout << e.what () << " " << (char*) EEXIST;
        }
        return;
    }
}

该文件显然没有制作,但它也没有犯应有的错误。

_mkdir不会抛出异常。 (这不是 python 或 boost,或任何智能中间件)

阅读您所指的文档:它返回一个值。 0 是可以的,-1:错误,请问为什么要errno

不要忽略返回值。 如果没有 UAC 提升,您可能没有足够的权限来创建目录。

所以我终于想通了 errno,对于 errno,您需要标题(至少在 Windows 上)<errno.h>。 错误代码的完整列表。

如果你想看看什么 errno 代码正在通过让我们说

if (
    _mkdir(((string)"C:/Program Files (x86)/Mail").c_str()) == 0 ||
    errno == 17 /* this is the code for - File exists - */
){
    // Do stuff

} else {
    int errorCode = errno; // You need to save the code before anything else,
                           //    becuase something else might change its value
    cout << errorCode;
}

这在 Windows 中有效,我不确定是否有可用于两者的库(如果有人知道请分享)。

不重要/咆哮 -

我在 Linux 文档/用户对这些事情的解释中注意到的一件事是,一切都变得很复杂。 我的意思是,是的,我们都对你的词汇知识印象深刻,除了计算机科学专业的人都知道,但显然有更简单的方法来解释事物,就像 freecodecamp 或 kahn 学院一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM