如何在C++中加入两个反斜杠

And*_*doc 1 c++ directory path

我需要创建一个接受目录路径的函数.但是为了让编译器读取反斜杠,我需要创建一个函数,将一个反斜杠变成2个反斜杠..到目前为止这是我的代码:

string stripPath(string path)
{       
        char newpath[99999];
        //char *pathlong;
        char temp;
        strcpy_s(newpath, path.c_str());
        //pathlong = newpath;
        int arrlength = sizeof(newpath);

            for (int i = 0; i <= arrlength ;i++)
            {
                if(newpath[i] == '\\')
                {
                    newpath[i] +=  '\\';
                    i++;
                }
            }
            path = newpath;
        return path;
} 
Run Code Online (Sandbox Code Playgroud)

此代码接收来自用户的输入,该用户是具有单个反斜杠的目录路径.问题是它提供了一个脏文本输出;

Cam*_*ron 5

int arrlength = sizeof(newpath);导致整个数组(chars)的大小被分配arrlength.这意味着您在数组中迭代超过99999个字符,即使路径较短(可能是这样).

你的循环条件也允许超过数组的边界(因为最后一个(99999)元素实际上是索引99998,而不是99999 - 数组是从零开始的):

for (int i = 0; newpath[i]] != '\0'; i++)
Run Code Online (Sandbox Code Playgroud)

此外,当您可以string直接遍历对象时,没有理由首先将字符串复制到字符数组中.

在任何情况下,都不需要从用户输入中转义反斜杠.反斜杠是一个像任何其他字符一样的单个字符; 在代码中嵌入字符串文字时,它才是特殊的.