Qt项目-打开文件失败

项目场景:

Qt:项目中文件操作问题:
项目存在读写文件操作,自测发现问题。


问题描述:

测试时发现路径中存在中文时打开失败,而且写中文路径文件也失败,写中文文件乱码。
于是写了测试代码进行测试…

	QString fileName = QFileDialog::getOpenFileName(this, tr("选择文件"), "./",
                                 tr("文件(*.*)"));
    cout << fileName.toStdString() << endl;
    qDebug() << fileName;
    
	fstream file;
    file.open(fileName.toStdString(), fstream::in);
    if(file.is_open())
    {
        cout << "open success" << endl;
        file.close();
    }else
        cout << "open false" << endl;

原因分析:

首先猜测是fstream引发的问题:fstream打开的路径中中文单字符与双字符问题,通过网上search的方案,于是在项目中设置本地编码,并没有解决。
然后意识到并不一定是fstream编码引发的问题,于是写了上述一段测试代码,发现fileName转string时输出的中文是乱码;难道获取的fileName为乱码?于是用qDebug打印了fileName发现QString正常。
那么最终确定就是QString转string时引发的乱码。


解决方案:

QString转string存在中文时的解决方法:

	QString fileName = QFileDialog::getOpenFileName(this, tr("选择文件"), "./",
                                 tr("文件(*.*)"));
    
	//QString 转 string 中文乱码的解决
	QByteArray tmp_array = fileName.toLocal8Bit();
	string tmp_str = string(tmp_array);
	cout << tmp_str << endl;
    
	fstream file;
    file.open(tmp_str, fstream::in);
    if(file.is_open())
    {
        cout << "open success" << endl;
        file.close();
    }else
        cout << "open false" << endl;
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值