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



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

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

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

从 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;
}

有点矫枉过正,但诀窍是你想要一个"快速"的解决方案

代码中有两个错误。

第一行:您忘记在文字字符串中将 \ 加倍。 碰巧 \t 是表示制表符的有效转义,因此您不会收到编译器错误,但您的字符串不包含您期望的内容。

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

这在标准库中不存在。例如,它存在于提升库中,请参阅提升字符串算法。您正在寻找的算法称为replace_all。

最新更新