C++ /Qt 替换字符串中的正、反斜杠:左斜杠(\)和右斜杠(/)

118 篇文章 11 订阅

目录

C++ 使用replace()方法替换字符串中的反斜杠:左斜杠(\)和右斜杠(/)

qt - 如何使用 QString replace() 将 '/' 替换为 '\\'?

QT5快速转换路径(/斜杠与\反斜杠转换)

-------------------------------------------------

QDir::separator()  :  /

NativeSeparators :\

QString strpath=QDir::fromNativeSeparators(str);
QString strpath2 = QDir::toNativeSeparators(strpath);

QDir::separator();

------------------------

//代码

    QString xTest ="///abd\\grt\\nnmm\\pee\\\\pp\\\\\\ppp//rr///qqaa/pppp";

    QString strpath=QDir::fromNativeSeparators(xTest);
    qDebug()<<"strpath : 111 "<<strpath;

        

    QString zzxTest ="///abd\p\\grt\\\ppp/sss\\\nnmm\\\\\\ee\\\\\rr///qqaa/pppp";

    QString strpath2 = QDir::fromNativeSeparators(zzxTest);
    qDebug()<<"strpath2 : 222 " << strpath2;

输出结果:

strpath : 111  "///abd/grt/nnmm/pee//pp///ppp//rr///qqaa/pppp"

strpath2 : 222 "///abdp/grt/ppp/sss/\nnmm///ee//\rr///qqaa/pppp"

说明:

1. 有连续的单数个的 Native Separator 时,为转移字符。

1.1. 当在转义字符的右侧,使用了没有定义的字母时,

错误提示:mainwindow.cpp:27:29: warning: unknown escape sequence '\p'

1.2. 当在转义字符的右侧,使用了已经定义的字母时,看具体的定义而言:

可能输出:“/\”,“//\”, 或者没有输出。这个多样化、复杂了

2. 有连续的双数个的 Native Separator 时,为转移字符。

每2个 "\\",会被 1个 "/" 所替代。

3. 作为路径使用时,“/”是跨平台的吧?

“/” :在 linux和 window都可以直接使用。

但 macOS就不清楚了,谁能在 macOS上帮忙试试,给个答案吧?

======================================

QDir

https://doc.qt.io/qtforpython-5/PySide2/QtCore/QDir.html

C++ 使用replace()方法替换字符串中的反斜杠:左斜杠(\)和右斜杠(/)

C++将左斜杠替换成右斜杠,把/换成\,把换\成/

    #include <iostream>
    #include <string>
    #include <stdio.h>
     
    int main(int argc, const char **argv)
    {
        //图片路径在 .\abc\defg\h.jpeg
        string facepath = ".\\abc\\defg\\h.jpeg";       
        string FacePath = facepath.substr(2);  //去掉前两个字符.\


        replace(FacePath.begin(), FacePath.end(), '\\', '/');   //替换'\'为'/'
        cout << "FacePath=" << FacePath << endl;
        return 0;
    }

输出:

FacePath=abc/defg/h.jpeg

或:
//FacePath= FacePath.replace(FacePath.find("\\") ,1, "/" );
//FacePath = FacePath.replace(FacePath.find("\\"), 1, "/");
————————————————
版权声明:本文为CSDN博主「易小侠」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dwf1354046363/article/details/120196618

qt中路径中的反斜杠和斜杠的替换

https://blog.csdn.net/Littlehero_121/article/details/115078556

以下内容摘抄博客:https://blog.csdn.net/u013541325/article/details/107511050

QString str = "D:\\02_Demo\\123";
    //##  \转/ (反斜杠转斜杠)
    QString strpath=QDir::fromNativeSeparators(str);
    qDebug()<<"strpath=="<<strpath;
    

    //## 将 /转\(斜杠转反斜杠)
    QString strpath2 = QDir::toNativeSeparators(strpath);
     qDebug()<<"strpath2=="<<strpath2;

QT5快速转换路径(/斜杠与\反斜杠转换)

1./转\(斜杠转反斜杠)函数

 [static] QString QDir::toNativeSeparators(const QString &pathName)

2./转\(斜杠转反斜杠)函数

[static] QString QDir::fromNativeSeparators(const QString &pathName)

下面测试典例:

    //获取应用程序的目录
    QString strCurrentApplicationDirPath=QCoreApplication::applicationDirPath();
    qDebug()<<strCurrentApplicationDirPath;

    /*将/转\(斜杠转反斜杠)*/
    QString strPath=QDir::toNativeSeparators(strCurrentApplicationDirPath);
    qDebug()<<strPath;

    /*将\转/(反斜杠转斜杠)*/
    QString strPath2=QDir::fromNativeSeparators(strPath);
    qDebug()<<strPath2;

调试输出如下:

"D:/QT5SourceCode/build-untitled-Desktop_Qt_5_12_5_MinGW_64_bit-Debug/debug"
"D:\\QT5SourceCode\\build-untitled-Desktop_Qt_5_12_5_MinGW_64_bit-Debug\\debug"
"D:/QT5SourceCode/build-untitled-Desktop_Qt_5_12_5_MinGW_64_bit-Debug/debug"
————————————————
版权声明:本文为CSDN博主「皓月盈江」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013541325/article/details/107511050

qt - 如何使用 QString replace() 将 '/' 替换为 '\\'?

任何人都可以帮助关注吗?假设我有一个带有存储某个文件的文件路径的 QString,我想替换 / (斜线)从它 \\ (双反斜杠)我试过:

mystring.replace("/","\\");

但它只放了一个 \而不是 \\
替换前的字符串: D:/myfiles/abc.zip
替换后的字符串: D:\myfiles\abc.zip
预期字符串: D:\\myfiles\\abc.zip

最佳答案

您需要使用:

mystring.replace("/","\\\\");

编译器使用 \作为字符串中的转义字符(例如 \t\n\r ),以便 \\居然变成了 \ .如果需要两个反斜杠,则需要从四个开始。

关于qt - 如何使用 QString replace() 将 '/' 替换为 '\\'?,我们在Stack Overflow上找到一个类似的问题:  https://stackoverflow.com/questions/11841961/ 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值