使用c ++创建具有今天日期的文件夹

时间:2017-07-07 07:16:34

标签: c++ csv datetime visual-studio-2015 directory

我是c ++编程和使用Visual Studio 2015的新手。我想创建一个文件夹,其中包含特定路径中当前日期的名称。我在互联网上搜索,但我找不到满意的解决方案。此外,我尝试了自己,但遗憾的是结果并不成功。 我使用了_mkdir()和CreateFolder()。

例如,如果我今天编译程序(07.07.2017),那么它应该创建一个名称为的文件夹:" 07072017"如果我再次编译它然后它应该显示消息:"文件夹已存在"。

提前致谢。

3 个答案:

答案 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;
}