c++ - _mkdir 给出虚假错误 windows
c++ - _mkdir giving false errors windows
您好,我正在尝试使用此代码在 windows 中创建一个目录
header
#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;
}
}
文件明明没有制作,但也没有制作the error it should.
_mkdir
不会抛出异常。 (这不是 python 或 boost,或任何智能中间件)
阅读您所指的文档:它 return 是一个值。 0可以,-1:错误,问为什么要errno
不要忽略 return 值。如果没有 UAC 提升,您可能没有足够的权限来创建目录。
所以我终于弄清楚了 errno,对于 errno,你需要 header(至少在 windows 上)< errno.h>。 errno codes.
的完整列表
如果您想查看正在执行的 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 中有效,我不确定是否有可供两者移植的库(如果有人知道请分享)。
不是Important/rant-
我在 Linux documentation/user 对这些事情的解释中注意到的一件事是,一切都变得复杂。我的意思是,是的,我们都对您的词汇知识印象深刻,只有计算机科学专业的学生才知道,但显然有更简单的方法来解释事物,例如 freecodecamp 或 kahn academy。
您好,我正在尝试使用此代码在 windows 中创建一个目录
header
#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;
}
}
文件明明没有制作,但也没有制作the error it should.
_mkdir
不会抛出异常。 (这不是 python 或 boost,或任何智能中间件)
阅读您所指的文档:它 return 是一个值。 0可以,-1:错误,问为什么要errno
不要忽略 return 值。如果没有 UAC 提升,您可能没有足够的权限来创建目录。
所以我终于弄清楚了 errno,对于 errno,你需要 header(至少在 windows 上)< errno.h>。 errno codes.
的完整列表如果您想查看正在执行的 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 中有效,我不确定是否有可供两者移植的库(如果有人知道请分享)。
不是Important/rant-
我在 Linux documentation/user 对这些事情的解释中注意到的一件事是,一切都变得复杂。我的意思是,是的,我们都对您的词汇知识印象深刻,只有计算机科学专业的学生才知道,但显然有更简单的方法来解释事物,例如 freecodecamp 或 kahn academy。