首页 > 其他分享 >window qt 路径中包含中文和空格解决方法

window qt 路径中包含中文和空格解决方法

时间:2022-11-28 15:59:23浏览次数:53  
标签:std qt dsize 空格 window ws str pdest string

对于window用户,文件名和文件夹经常使用中文来命名,或者文件夹包含了空格,类似“Program File”这样的。

针对以上场景,经常发生读写文件或者图片失败的情况。下面提供解决方案。亲测有效。直接上代码干脆利索。

 

功能实现代码函数封装:

std::string wstr2str(const std::wstring &ws)
{
    size_t i;
    std::string curLocale = setlocale(LC_ALL, NULL);
    setlocale(LC_ALL, "chs");
    const wchar_t* psource = ws.c_str();
    size_t dsize = 2 * ws.size() + 1;
    char* pdest = new char[dsize];
    memset(pdest, 0x0, dsize);
    wcstombs_s(&i, pdest, dsize, psource, dsize);
    std::string result = pdest;
    delete [] pdest;
    setlocale(LC_ALL, curLocale.c_str());
    return result;
}

std::string qstr2str(QString str)
{
    std::wstring ws = str.toStdWString();
    std::string res = wstr2str(ws);
    return res;
}

 

调用及测试代码示例如下:

QString fileName = QFileDialog::getOpenFileName(nullptr, "Open File",
                                                     a.applicationDirPath(),
                                                     "All (*.*)");
    std::string str = qstr2str(fileName);
    qDebug() << fileName  << str.size();
    cv::Mat mat = cv::imread(str, cv::IMREAD_ANYCOLOR|cv::IMREAD_ANYDEPTH);
    qDebug() << mat.rows << mat.cols << mat.depth();

运行打印信息如下:

Starting D:\project\qt\testgui\bin\testgui.exe...
"D:/share/dir space空格/12原图.tiff" 34
4948 6560 2
D:\project\qt\testgui\bin\testgui.exe exited with code 0

 

这里涉及的就是宽窄字符的转换问题。预祝遇到此问题的小伙伴见贴问题即解。

 

标签:std,qt,dsize,空格,window,ws,str,pdest,string
From: https://www.cnblogs.com/larkin-cn/p/16932374.html

相关文章

  • WinRAR软件,添加压缩时,系统内存很快爆满,Windows系统卡死
    问题:WinRAR软件,添加压缩时,系统内存很快爆满,Windows系统卡死解析:软件bug,配置时,字典未初始化成功,导致内存溢出。解决:导出配置为,reg文件。修改不同的字段为下列数据后,重新导......
  • windows 安装Tomcat
    Windows:1.安装tomcat,建议8.0,进入官网https://tomcat.apache.org/download-80.cgi,找到左侧中的Download找到对应版本的tomcat,上传到百度网盘的8.5.31版本。链接:https:......
  • 在Windows上运行单节点的Cassandra
    Cassandra可以安裝在很多系统上,我是安装在windowsserver2008R2上,安装相当简单,只要把下载下来的压缩包解压缩放到一个目录下就可以了,这里主要是记录下......
  • windows关闭端口方法
    https://blog.csdn.net/weixin_56306210/article/details/125642902在介绍各种端口的作用前,这里先介绍一下在Windows中如何关闭/打开端口,因为默认的情况下,有很多不安全的......
  • windows error LNK2019
    温馨提示,请使用ctrl+F进行快速查找ws2_32.liberrorLNK2001:无法解析的外部符号__imp_htonserrorLNK2001:无法解析的外部符号__imp_ntohlerrorLNK2001:无法解析......
  • USB应用实战视频教程第3期:手把手玩转USB BULK方式下位机和QT6.4上位机开发(上篇)
    ​​​​ 为防止视频时间太长,本期视频先发布上篇USB下位机和USB驱动设计安装,以及以前基于emWin电脑端模拟器设计的上位机效果展示。下期视频教程分享QT6.4设计的上位机。......
  • 处理问题:windows server 2016由于没有远程桌面授权服务器可以提供许可证,远程会话被中
      windowsserver可以多用户同时登陆,默认最大远程登录数量为2,如果有更多人需要同时远程登录,则需要安装远程桌面授权服务,第一次安装后,免费期为120天,超过则无法正常远程......
  • Windows office 密钥卸载
    介绍:设备上多次安装office和使用激活软件会造成同一软件有不同版本的秘钥,造成软件不能灵活的更新和使用最新的功能体验。经过多次的卸载安装,发现可以通过卸载不同版本的秘钥......
  • windows环境下,安装 telegraf ,监控服务器cup /disk 等
    十年河东,十年河西,莫欺少年穷学无止境,精益求精时序数据库对windows的支持真的不友好,搞了半天,最终功夫不负有心人,索性记录下来,省的其他人再走弯路1、下载influxdb​​https://......
  • Windows游戏找不到了怎么办?
      大家有的时候,可能是不慎操作,或是某些新装的Windows,会发现那些经典的游戏不见了,那它们去哪了呢?是长腿跑了?还是Windows偷工减料?都不是,让巩固来教你们把他们找出来......