CString与UTF8互转代码
这个代码网上很多,留在这里做个备份。
static std::string ConvertCStringToUTF8( CString strValue ) { std::wstring wbuffer; #ifdef _UNICODE wbuffer.assign( strValue.GetString(), strValue.GetLength() ); #else /* * 转换ANSI到UNICODE * 获取转换后长度 */ int length = ::MultiByteToWideChar( CP_ACP, MB_ERR_INVALID_CHARS, (LPCTSTR) strValue, -1, NULL, 0 ); wbuffer.resize( length ); /* 转换 */ MultiByteToWideChar( CP_ACP, 0, (LPCTSTR) strValue, -1, (LPWSTR) (wbuffer.data() ), wbuffer.length() ); #endif /* 获取转换后长度 */ int length = WideCharToMultiByte( CP_UTF8, 0, wbuffer.data(), wbuffer.size(), NULL, 0, NULL, NULL ); /* 获取转换后内容 */ std::string buffer; buffer.resize( length ); WideCharToMultiByte( CP_UTF8, 0, strValue, -1, (LPSTR) (buffer.data() ), length, NULL, NULL ); return(buffer); } static CString ConvertUTF8ToCString( std::string utf8str ) { /* 预转换,得到所需空间的大小 */ int nLen = ::MultiByteToWideChar( CP_UTF8, NULL, utf8str.data(), utf8str.size(), NULL, 0 ); /* 转换为Unicode */ std::wstring wbuffer; wbuffer.resize( nLen ); ::MultiByteToWideChar( CP_UTF8, NULL, utf8str.data(), utf8str.size(), (LPWSTR) (wbuffer.data() ), wbuffer.length() ); #ifdef UNICODE return(CString( wbuffer.data(), wbuffer.length() ) ); #else /* * 转换为ANSI * 得到转换后长度 */ nLen = WideCharToMultiByte( CP_ACP, 0, wbuffer.data(), wbuffer.length(), NULL, 0, NULL, NULL ); std::string ansistr; ansistr.resize( nLen ); /* 把unicode转成ansi */ WideCharToMultiByte( CP_ACP, 0, (LPWSTR) (wbuffer.data() ), wbuffer.length(), (LPSTR) (ansistr.data() ), ansistr.size(), NULL, NULL ); return(CString( ansistr.data(), ansistr.length() ) ); #endif }
分类:
C/C++
, windows编程开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理