【发布时间】:2021-03-17 20:20:41
【问题描述】:
在我的 C++/Linux 应用程序中,我想创建一个临时文件夹。
代码很简单:
std::string tempFolder(mkdtemp("foo"));
令我惊讶的是,我收到了一条警告消息:
警告:ISO C++11 不允许从字符串文字转换为 'char *'
好吧,我记得 C++ 将字符串文字视为std::string,而不是char*。我也知道我可以通过将char * 声明为const char* 来避免此消息。所以我的代码可能如下所示:
const char *tpl = "foo";
std::string tempFolder(mkdtemp(tpl));
如果不是因为mkdtemp 需要char * 而不是const char*。所以这里需要显式转换,现在我的代码应该是这样的:
const char *tpl = "foo";
std::string tempFolder(mkdtemp(const_cast<char *>(tpl)));
在我看来,这看起来绝对荒谬,代码看起来绝对难以理解和超载。
所以我的问题 - 我做错了什么?
【问题讨论】: