void MapEditor::on_pushButton_12_clicked()//保存地图
{
using namespace std;
QString filename = QFileDialog::getSaveFileName(this, "保存文件", "", "地图文件(*.map2)");//文件扩展名为.map2
if (filename != "")//判断地址是否输入成功
{
ofstream out(filename.toStdString());//转换为标准字符串进行保存
if (out.is_open())
{
out << ui->label_6->text().toStdString() << endl;
out << num1 << ' ' << num2 << endl;
for (int i = 1; i <= num2; i++)
out << P[i].x() << ' ' << P[i].y() << ' ' << Pl[i].toStdString() << endl;//空格隔开
for (int i = 1; i <= num2; i++)
{
for (int j = 1; j <= num2; j++)
out << matrix[i][j] << ' ';
out << endl;
}
for (int i = 1; i <= num1; i++)
out << line[i].a << ' ' << line[i].b << endl;
out << pic.toStdString() << endl;
QMessageBox::information(this, "提示", "保存成功");
out.close();//关闭文档
}
else QMessageBox::information(this, "提示", "保存失败");
}
}
试试在字符串前加上u8
比如
QString filename = QFileDialog::getSaveFileName(this, u8"保存文件", "", u8"地图文件(*.map2)");//文件扩展名为.map2
// QString to stdstring 支持中文
std::string path = path.toLocal8Bit().toStdString();
试过几种方法,这种方法可以解决所有乱码问题:在有乱码的头文件开头加入 #pragma execution_character_set(“utf-8”),如果有多个文件有乱码,你把这行加入全局的头文件中