我是c ++编程和使用Visual Studio 2015的新手。我想创建一个文件夹,其中包含特定路径中当前日期的名称。我在互联网上搜索,但我找不到满意的解决方案。此外,我尝试了自己,但遗憾的是结果并不成功。 我使用了_mkdir()和CreateFolder()。
例如,如果我今天编译程序(07.07.2017),那么它应该创建一个名称为的文件夹:" 07072017"如果我再次编译它然后它应该显示消息:"文件夹已存在"。
提前致谢。
答案 0 :(得分:1)
如果我们谈论的是Windows,您可以尝试使用WINDOWS API CreateDirectory函数。 更多信息:https://msdn.microsoft.com/en-us/library/windows/desktop/aa363855(v=vs.85).aspx
使用argv [0]从main(int argc, char argv[])
获取.exe当前目录,并记住执行#include <windows.h>
。您还可以尝试使用参数mkdir folderName执行shell或cmd.exe来实现它。
至于检索当前日期,我建议阅读 How to get current time and date in C++?
答案 1 :(得分:1)
如@ user8210143所述,您可以使用c ++标准库实验位。
如果日期格式对您的目的不重要,您可以使用__DATE__
编译器定义:
<强> Live On Coliru 强>
#include <experimental/filesystem>
#include <iostream>
namespace fs = std::experimental::filesystem;
int main() {
auto dirname = fs::current_path() / __DATE__;
std::cout << "creating directory " << dirname << "\n";
if (create_directories(dirname)) {
std::cout << "directory didn't exist yet\n";
}
}
打印类似
的内容creating directory "/home/sehe/Projects/stackoverflow/Jul 7 2017"
directory didn't exist yet
在我的系统上
答案 2 :(得分:-1)
以下是使用<experimental/filesystem>
和visual studio的示例。
#include "stdafx.h"
#include <iostream>
#include <experimental\filesystem>
using namespace std;
int main() {
int sizeofdate = strlen(__DATE__);
char* dirname = new char[4 + sizeofdate];
memcpy(dirname, "C:/", 3);
memcpy(dirname + 4, __DATE__, sizeofdate);
cout << "creating directory" << endl;
if (!experimental::filesystem::exists(dirname)) {
experimental::filesystem::create_directory(dirname);
}
else {
cout << "directory already exists!" << endl;
}
delete[] dirname;
int thing;
cin >> thing;
return 0;
}