首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在字符串中插入\字符

在字符串中插入\字符
EN

Stack Overflow用户
提问于 2016-05-17 03:17:23
回答 4查看 113关注 0票数 1

我尝试在字符串中插入一个\字符,这样我就可以得到

用C:\Users\dave\Desktop\XY.txt代替C:\Users\georg\Desktop\XY.txt

以下是代码,但由于某些原因,它不能工作

代码语言:javascript
运行
复制
string q="C:\Users\georg\Desktop\XY.txt";
char x='\\';


for (int i = 0; i < q.length(); ++i) {
if (q[i] == '\\')
 q.insert(i,4,x);
 }
EN

Stack Overflow用户

发布于 2016-05-17 03:36:23

目标

在字符串中找到的每个字符串中添加一个额外的反斜杠(用于另一个程序)

当前问题

  1. 示例字符串没有正确转义(最简单的是使用原始字符串)
  2. for循环一次插入4个反斜杠,因此永远不会到达末尾。

使用C++11的解决方案

这将为每个已经存在的值添加一个反斜杠:

代码语言:javascript
运行
复制
#include <iostream>
#include <string>

int main()
{
    std::string q = R"(C:\Users\georg\Desktop\XY.txt)";

    char x='\\';


    for (int i = 0; i < q.length(); ++i) {
        if (q[i] == '\\') {
            q.insert(++i,1,x);
        }

    }
    return 0;
}

不带原始字符串的解决方案

代码语言:javascript
运行
复制
#include <iostream>
#include <string>

int main()
{
    //std::string q = R"(C:\Users\georg\Desktop\XY.txt)";
    std::string q = "C:\\Users\\georg\\Desktop\\XY.txt";

    char x='\\';


    for (unsigned i = 0; i < q.length(); ++i) {
        if (q[i] == '\\') {
            q.insert(++i,1,x);
        }
    }

    std::cout << q;

    return 0;
}

Result

代码语言:javascript
运行
复制
C:\\Users\\georg\\Desktop\\XY.txt
票数 1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37261569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档