C++使用OCC读取igs文件时路径为中文时,无法读取的问题
生活随笔
收集整理的這篇文章主要介紹了
C++使用OCC读取igs文件时路径为中文时,无法读取的问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
項目場景:在中讀取igs文件時如果文件路徑是帶中文就無法讀取
問題描述:
為經過修改時,進行監控會顯示中文亂碼 aFile = ::_wfopen (aFileNameW.ToWideString(),aFileModeW.ToWideString());原因分析:
經過調試測試發現是底層的TKernel庫中的上圖代碼出現的問題,ToWideString()函數的問題,并沒有轉化成功。 初步認為是寬字節轉化這個函數的問題解決方案:
提示:重寫了這個函數,修改后如下
(此函數位于OSD_openfile.cxx中)
UINT nLen = MultiByteToWideChar(936,NULL,theName,-1,NULL,NULL);
WCHAR *wszBuffer = new WCHAR[nLen+1];
nLen = MultiByteToWideChar(936,NULL,theName,-1,wszBuffer,nLen);
wszBuffer[nLen] = 0;
//獲取轉為UTF8多字節后需要的緩沖區大小,創建多字節緩沖區
nLen = WideCharToMultiByte(CP_UTF8,NULL,wszBuffer,-1,NULL,NULL,NULL,NULL);
aFile = ::_wfopen (wszBuffer,
aFileModeW.ToWideString());
總結:使用了WideCharToMultiByte函數解決了問題,但是重新編譯的時候會有一些報警
總結
以上是生活随笔為你收集整理的C++使用OCC读取igs文件时路径为中文时,无法读取的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 亚马逊的选品规则——新手必看
- 下一篇: c++二进制转十进制