当前位置: 代码迷 >> WinCE >> WINCE下<locale>有关问题
  详细解决方案

WINCE下<locale>有关问题

热度:185   发布时间:2016-04-28 11:55:46.0
WINCE下<locale>问题
WINCE下没有标准C++的<locale>文件,只有C的locale.h文件,
但现在的问题是,locale::global(locale(""));  和file.imbue( std::locale("chs") ); GLOBAL和IMBUE用不了,
有谁知道这两个函数的功能,还有locale.h中有什么方法可以替换它?
源码如下:
VOID CStrTableParse::Parse( LPCTSTR pStrPath )
{
std::wifstream inFile;
inFile.imbue( std::locale( "chs" ) ); //解决中文乱码
inFile.open( pStrPath );
if( !inFile.is_open() )
return;

m_mapStrIDToString.clear();
TCHAR wcline[1024] = {L'\0'};
CString strTemp;
CString strLine = _T( '\n' );

do
{
inFile.getline( wcline, sizeof( wcline ) / sizeof( TCHAR ) );
strTemp = wcline;

ParseLineData( strTemp );
}
while( inFile.gcount() > 0 );
inFile.close();
}

报错信息如下:
.\ECUSettingXmlParse\MainXmlParse.cpp(1410) : error C2039: 'locale' : is not a member of 'std'
1>.\ECUSettingXmlParse\MainXmlParse.cpp(1410) : error C3861: 'locale': identifier not found
1>StrTableParse.cpp
1>.\ECUSettingXmlParse\StrTableParse.cpp(19) : error C2039: 'imbue' : is not a member of 'std::basic_ifstream<_Elem,_Traits>'
------解决思路----------------------
这个函数,不就是简单的文件读吗?

完全可以自己使用 API 来完成,为什么一定要用 std?就算要用,从 PC 移植到 WinCE,一些功能是不支持的。这些只能自己实现!
------解决思路----------------------
偶没有用过 DUILIB,所以不清楚它有没有 WinCE 版本。
 LZ 你 Google g 一下吧,好像是有,但和 PC 上的 DUILIB 是否相同就不在清楚了。按 DUILIB 的百度百科,它确实是有 WinCE 版本的。

使用 WinCE 版本 DUILIB 是否有对代码进行改动,要看 DUILIB 的实现,你只是下载回来看看才知道。
------解决思路----------------------
是有wince版本,不过我不敢用。
  相关解决方案