在字符串C中将单反斜杠替换为双反斜杠

时间:2019-10-20 16:16:35

标签: c++

我正在尝试将一个反斜杠替换为两个。为此,我尝试使用以下代码

str = "d:\test\text.txt"
str.replace("\\","\\\\");

该代码不起作用。整个想法是将str传递给deletefile函数,该函数需要使用双斜杠。

2 个答案:

答案 0 :(得分:1)

您的代码中有两个错误。

第一行:您忘了在文字字符串中将\翻倍。 碰巧\ t是代表制表符的有效转义符,因此不会出现编译器错误,但字符串不包含预期的内容。

第二行:根据string::replace的引用, 您可以根据子字符串位置用另一个子字符串替换子字符串。 但是,没有任何版本可以进行替换,即将给定子字符串的所有出现都替换为另一个。

在标准库中不存在。例如,它存在于boost库中,请参见boost string algorithms。您正在寻找的算法称为replace_all。

答案 1 :(得分:0)

自c ++ 11起,您可以尝试使用正则表达式

#include <regex>
#include <iostream>

int main() {
    auto s = std::string(R"(\tmp\)");
    s = std::regex_replace(s, std::regex(R"(\\)"), R"(\\)");

    std::cout << s << std::endl;
}

有点矫over过正,但诀窍在于您想要“快速”解决方案