gpt4 book ai didi

c++ - 无法创建动态文件夹名称

转载 作者:行者123 更新时间:2023-11-30 02:33:07 26 4
gpt4 key购买 nike

在 C++ 中,我想在每次运行程序时创建一个动态文件夹。

#include <direct.h> // mkdir
#include <iostream> // std
#include <iomanip> // put_time

int main(){
time_t rawtime;
struct tm * timeinfo;
char buffer[40];
time(&rawtime);
timeinfo = localtime(&rawtime);
//strftime(buffer, sizeof(buffer), "%d-%m-%Y %I:%M:%S", timeinfo);
strftime(buffer, sizeof(buffer), "%d_%m_%Y_%I_%M_%S", timeinfo);
std::string path = "C:/example/";
path.append(std::string(buffer));
mkdir(path.c_str());
//system("pause");
return 0;
}

我想创建一个名为 "Example/03_03_2016_20_22_26" 的文件夹,但上面的代码不会创建我想要的文件夹。

如果我删除 path.append(std::string(buffer)); 行,它将在我的 C 目录中创建名为 example 的文件夹。

但是我想要一个根据完整的日期和时间命名的文件夹。

我哪里错了或者我错过了什么?

最佳答案

我在我的项目中出于类似目的使用此代码(SAVE_DIR 是一个宏定义):

#include <time.h>
#include <iomanip>
#include <sstream>

std::ostringstream pathstr; // a convenient way to construct strings
std::time_t now = std::time(nullptr); // get the current time
// insert the required parts into the stream
pathstr << SAVE_DIR
<< std::put_time(std::localtime(&now), "%Y_%m_%d_%H_%M_%S") << ".png";
std::string path = pathstr.str(); // and the result as std::str

输出:

/home/user/prog/render/rt/saves/2016_03_03_23_10_50.png

这有一个纯 C++ 的好处,尽管它可能看起来有点笨拙,具体取决于您的口味。

至于你的代码可能会失败什么,我会先在调试器中观察字符串值,然后保存 mkdir() 的返回值并根据规范检查它:POSIX mkdir() .

关于c++ - 无法创建动态文件夹名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35783229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com