c++ - 将双斜杠替换为四斜杠

标签 c++ replace backslash

我的 char 数据类型包含一个带双斜杠的目录。我想将双斜杠替换为四个斜杠,以便我的输出将是双斜杠。我尝试了很多解决方案,但没有任何效果。

char *str = "C:\\Users\\user\\desktop";
for(int i = 0;i < strlen(str) ; i++)
    if(str[i] == '\\')  
    str[i] =='\\\\'; 

此代码的输出显示“C:\Users\user\desktop”。

最佳答案

首先,由于您使用的是 C++,请考虑使用 std::string。修改字符串文字是未定义的行为(要么将字符串文字复制到缓冲区中,要么首先使用 char []std::string。)

其次,字符串文字必须用双引号括起来。

第三,您需要为每个转义的反斜杠设置两组反斜杠。 \\\\ 变成 \\


这应该可以解决问题:

std::string s("C:\\Users\\user\\desktop");
auto it = std::find(s.begin(), s.end(), '\\');
while (it != s.end()) {
    auto it2 = s.insert(it, '\\');

    // skip over the slashes we just inserted
    it = std::find(it2+2, s.end(), '\\');
}
std::cout << s; // C:\\Users\\user\\desktop

关于c++ - 将双斜杠替换为四斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20810784/

相关文章:

javascript - 为什么替换反斜杠代码在 JS 中不起作用?

c++ - spimi算法误解

c++ - 为什么我的基于 C++ Clock() 的函数返回负值?

c++ - 什么是 Unresolved external 因素?

javascript - 每 x 个字符强制换行,但保留单词不被剪切

Python:用反斜杠连接元组

PHP 将双反斜杠 "\\"替换为单反斜杠 "\"

c++ - 如何在没有警告的情况下在 gnu++11 标准中写入 "nested if...else statement for constants"?

regex - sed 和 regex 来添加行

java - 如何替换子串的每个索引