我目前正在使用C字符串标头和C ++,但遇到了问题。我的路很长:

C:\bla\bla\bla\bla


我需要将反斜杠更改为双反斜杠,以便我的OS_CopyFile()函数可以正确读取它,但我不知道如何?

我使用以下方法获取路径:

CHAR* szValueBuf = NULL;
DWORD cchValueBuf = 0;
UINT uiStat =  MsiGetProperty(hInstall, TEXT("OriginalDatabase"), TEXT(""), &cchValueBuf);

if (ERROR_MORE_DATA == uiStat)
{
    ++cchValueBuf;
    szValueBuf = new TCHAR[cchValueBuf];
    if (szValueBuf)
    {
        uiStat = MsiGetProperty(hInstall, TEXT("OriginalDatabase"), szValueBuf, &cchValueBuf);
    }
}
if (ERROR_SUCCESS != uiStat)
{
    if (szValueBuf != NULL)
        delete[] szValueBuf;
    return ERROR_INSTALL_FAILURE;
}

最佳答案

您误解了反斜杠在C ++中的工作方式。您的字符串只有一个反斜杠。在字符串文字中,您必须在代码中使用两个反斜杠才能在运行时在字符串中获得一个反斜杠。

OS_CopyFile(szValueBuf, "C:\\TEMP\\product.ini",0);


上面的字符串中只有两个反斜杠。您已经为自己发明了一个不存在的问题。

关于c++ - C字符串替换反斜杠,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12142240/

10-15 22:56