【发布时间】:2011-08-08 14:01:02
【问题描述】:
自从我弄乱 C/C++ 以来已经有一段时间了,我对使用 char* 的可用函数的记忆已经消失了。
我目前使用以下代码获取当前工作目录...
char *path = NULL;
size_t size = 0;
path = _getcwd(path, size);
Msg("Current Working Directory: %s\n", path);
但是,我需要走这条路,然后把最后一个目录剪掉,放到上一个目录。它目前在路径中存储诸如“C:/srcds/orangebox”之类的东西,我需要从中删除最后一个目录以获得正确的路径。在这种情况下,它将是“C:/srcds”。
使用 char* 执行此操作的最佳方法是什么?请不要建议使用字符串。我知道这非常容易,但我使用的 SDK 主要围绕 char* 进行,所以我尽量坚持使用它以提高可读性。
【问题讨论】:
-
std::string有问题吗?当您的 API 需要char const*... 时,请尽可能晚地应用.c_str()。真的。特别是如果您关心“可读性”(“易读性”)。什么是“C/C++”? -
你总是可以附加一个'../'
-
如果你实际使用 C++ 工作,你甚至只会称它们为 C 字符串,而不是其他任何东西。
-
实际上,我会使用
boost::filesystem。