笔者在进行cloudcompare的插件二次开发时,需要读局域网或服务器上txt文件或二进制文件数据,但是总是不成功。后来发现,局域网路径存在中文以及特殊字符,这样导致读取文件指针为空。Qt内部提供了相应的文件转码工具。核心代码如下:
QString fileName = QDir::toNativeSeparators(m_fileName.c_str()).toLocal8Bit().constData();
std::ifstream fin(fileName.toStdString(), std::ios::binary);
if (!fin)
{
ccLog::Print(QString("open file failed%1!").arg(fileName));
return;
}
ccLog::Print(QString("open file succeed%1!").arg(fileName));