如何转换真实路径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 ++ [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何将char数组转换为CString

C++ MFC CString怎么转换成Double

mfc中,如何将CString 转换成 string

在 Swift 中使用 C 字符串,或者:如何将 UnsafePointer<CChar> 转换为 CString

如何将 CString 转换为 CByteArray?

Android Q - 如何获取下载文件夹的真实路径