如何转换真实路径CString c ++ [关闭]
Posted
技术标签:
【中文标题】如何转换真实路径CString c ++ [关闭]【英文标题】:How to convert real path CString c++ [closed] 【发布时间】:2018-10-23 04:58:13 【问题描述】:我有一个真实的 windows 路径:
CString path = "C:\Programs File (x86)\Program folder\exec.exe";
如何转换成
CString path = "C:\\Programs File (x86)\\Program folder\\exec.exe";
我用path.Replace(L"\\", L"\\\\");
尝试过,但失败了。
【问题讨论】:
失败是什么意思?我问是因为Programs File (x86)
拼写错误,应该是Program Files (x86)
。不过,这可能只是问题中的一个错字......
失败是什么意思?你有没有编译错误? (因为您对 L
前缀的不一致使用看起来有问题。)或者您是否尝试打印出替换的结果,但它看起来不像您想要的那样? (因为这可能隐藏了反斜杠。)即澄清您的问题 - 它不完整。
建议您提供Minimal, Complete, and Verifiable example,以便您获得更好的帮助。
从您的一个 cmets 中,我了解到您的路径是从注册表中读取的。如果路径是实际上 C:\Programs File (x86)\Program folder\exec.exe
,那么你不需要转换任何东西。路径已经有效。只有在使用字符串文字时才需要双 `\\`。
@enh:Windows 上的路径分隔符是反斜杠。并非所有 API 调用都会将正斜杠转换为反斜杠。
【参考方案1】:
在您的一个 cmets 中,您写道您的路径是从注册表中读取的。
如果路径实际上是C:\Programs File (x86)\Program folder\exec.exe
,那么你不需要转换任何东西。路径已经有效。
只有在您使用字符串文字时才需要双精度 \\
。
示例:
假设您的注册表值包含C:\Programs File (x86)\Program folder\exec.exe
逐字
程序 sn-p 1:
CString somepath = YourGetFromRegistryFunction();
// now somepath contains the correct path already
AfxMessageBox(somepath); // show the path for debugging purposes
程序 sn-p 2:
CString somepath = "C:\\Programs File (x86)\\Program folder\\exec.exe";
// now somepath contains the correct path already, the compiler
// replaces the `\\` with a single `\\`
AfxMessageBox(somepath); // show the path for debugging purposes
【讨论】:
以上是关于如何转换真实路径CString c ++ [关闭]的主要内容,如果未能解决你的问题,请参考以下文章