C++使用OCC读取igs文件时路径为中文时,无法读取的问题
生活随笔
收集整理的這篇文章主要介紹了
C++使用OCC读取igs文件时路径为中文时,无法读取的问题
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
項(xiàng)目場(chǎng)景:在中讀取igs文件時(shí)如果文件路徑是帶中文就無(wú)法讀取
問(wèn)題描述:
為經(jīng)過(guò)修改時(shí),進(jìn)行監(jiān)控會(huì)顯示中文亂碼 aFile = ::_wfopen (aFileNameW.ToWideString(),aFileModeW.ToWideString());原因分析:
經(jīng)過(guò)調(diào)試測(cè)試發(fā)現(xiàn)是底層的TKernel庫(kù)中的上圖代碼出現(xiàn)的問(wèn)題,ToWideString()函數(shù)的問(wèn)題,并沒(méi)有轉(zhuǎn)化成功。 初步認(rèn)為是寬字節(jié)轉(zhuǎn)化這個(gè)函數(shù)的問(wèn)題解決方案:
提示:重寫(xiě)了這個(gè)函數(shù),修改后如下
(此函數(shù)位于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;
//獲取轉(zhuǎn)為UTF8多字節(jié)后需要的緩沖區(qū)大小,創(chuàng)建多字節(jié)緩沖區(qū)
nLen = WideCharToMultiByte(CP_UTF8,NULL,wszBuffer,-1,NULL,NULL,NULL,NULL);
aFile = ::_wfopen (wszBuffer,
aFileModeW.ToWideString());
總結(jié):使用了WideCharToMultiByte函數(shù)解決了問(wèn)題,但是重新編譯的時(shí)候會(huì)有一些報(bào)警
總結(jié)
以上是生活随笔為你收集整理的C++使用OCC读取igs文件时路径为中文时,无法读取的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 亚马逊的选品规则——新手必看
- 下一篇: 使用Azure Kinect Body骨