【发布时间】:2017-04-05 12:09:06
【问题描述】:
根据文档,在 Local\ 或 Global\ 之后,除了反斜杠之外,任何字符都可以。我决定根据物理文件的文件路径来命名我的 mmf,如下所示:
std::string GetMapName(std::string FilePath) {
std::string Ret("Local\\");
char* pP = (char*)FilePath.c_str();
for (int i = 0; i < Path.size(); i++) {
if (pP[i] == '\\') pP[i] = '/';
}
Ret.append(FilePath);
return Ret;
}
因此,如果文件位于 C:\test\vht1.tst 则它会生成字符串“Local\C:/test/vht1.tst”
我在我的计算机上对此没有任何问题,但该软件最终会在共享主机环境中运行,我真的找不到太多关于命名 MMF 的约定的信息,所以.. 这是个好主意吗?
【问题讨论】:
-
不允许修改
.c_str()返回的字符串内容。 -
它工作得很好.. 但我猜它不能保证这样做,那么你对字符替换有什么建议?
-
使用
FilePath[i]而不是pP[i]。 -
我认为您的代码不能在 Unix 主机上运行。在 Unix 上,
/是一个目录分隔符,但\只是一个普通的文件名字符。 -
好吧!不知道字符串有括号运算符。