程序里wstring,string和CString的Buffer里到底存的是什么(菜鸟问题)
2013-08-30 09:48
363 查看
真的很惭愧,竟然没搞懂“在程序里wstring,string和CString的Buffer里到底存的是什么”这种菜鸟级的问题
分别在字符集为MuiltiByte和Unicode下的程序进行测试
结果如下:
MuiltiByte程序里
Unicode程序里
结论:
在不同的字符集下 string 和 wstring的行为都是一样的,string永远都是存MuiltiByte而wstring永远都是存Unicode,
而CString都是根据你这个程序的字符集决定的。
分别在字符集为MuiltiByte和Unicode下的程序进行测试
结果如下:
MuiltiByte程序里
int main() { string tmpStr = "abc"; //MuiltiByte wstring tmpStr3 = L"abc"; //Unicode string tmpStr1 = "一二"; //MuiltiByte wstring tmpStr2 = L"一二"; //Unicode char tmpCArr[255]; memset(tmpCArr,0,255); WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)tmpStr2.c_str(), tmpStr2.length(), tmpCArr, 255, NULL, NULL) ; WCHAR tmpCArr1[255]; memset(tmpCArr1,0,sizeof(tmpCArr1)); MultiByteToWideChar(CP_ACP,NULL,tmpStr1.c_str(),tmpStr1.length(),tmpCArr1,255); CString tmpCStr1("一二"); //MuiltiByte CString tmpCStr2(L"一二"); //MuiltiByte CString tmpCStr3(_T("一二")); //MuiltiByte CString tmpCStr4("abc"); //MuiltiByte CString tmpCStr5(L"abc"); //MuiltiByte CString tmpCStr6(_T("abc")); //MuiltiByte }
Unicode程序里
int main() { string tmpStr = "abc"; //MuiltiByte wstring tmpStr3 = L"abc"; //Unicode string tmpStr1 = "一二"; //MuiltiByte wstring tmpStr2 = L"一二"; //Unicode char tmpCArr[255]; memset(tmpCArr,0,255); WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)tmpStr2.c_str(), tmpStr2.length(), tmpCArr, 255, NULL, NULL) ; WCHAR tmpCArr1[255]; memset(tmpCArr1,0,sizeof(tmpCArr1)); MultiByteToWideChar(CP_ACP,NULL,tmpStr1.c_str(),tmpStr1.length(),tmpCArr1,255); CString tmpCStr1("一二"); //Unicode CString tmpCStr2(L"一二"); //Unicode CString tmpCStr3(_T("一二")); //Unicode CString tmpCStr4("abc"); //Unicode CString tmpCStr5(L"abc"); //Unicode CString tmpCStr6(_T("abc")); //Unicode }
结论:
在不同的字符集下 string 和 wstring的行为都是一样的,string永远都是存MuiltiByte而wstring永远都是存Unicode,
而CString都是根据你这个程序的字符集决定的。
相关文章推荐
- CString与string,wchar与char,wstring与string的相关转换问题
- 《C语言到底能干什么》第一章 窗口类程序的编写
- 让作者告诉你DirectX修复工具到底能解决什么问题
- 编写程序到底是什么玩意?
- String有重写Object的hashcode和toString吗?重写equals不重写hashCode会有什么问题?
- 解决不能从 WTL::CString 转换为 ATL::CSimpleString & 的问题
- CString/wstring、CString/string互转
- java程序中String args[]起什么作用?
- 面试经常遇到的问题 string stringbuffer stringbuilder ...
- C++中string,wstring,CString的基本概念和用法
- 有关stm32的问题,程序里面的u8、u16这些是什么意思啊
- 【转】关于使用Android6.0编译程序时,出现getSlotFromBufferLocked: unknown buffer: 0xac0f8650问题的解释
- android自动更新程序,安装完以后就什么都没有了,没有出现安装成功的界面的问题
- C#写一般处理程序遇到的一个String和int转换的问题
- wchar_t*,wchar_t,wchat_t数组,char,char*,char数组,std::string,std::wstring,CString转自由骑士大哥
- 崇志宏:深度学习到底解决了什么问题? 东南大学
- 【郝斌数据结构自学笔记】75-78_链式二叉树遍历具体程序演示_5种常用排序概述和快速排序详细讲解_再次讨论什么是数据结构_再次讨论到底什么是泛型
- std::string 和 CString问题
- 架构漫谈(六):软件架构到底是要解决什么问题?
- const volatile int i=10;这行代码有没有问题?如果没有,那i 到底是什么属性?【网络总结,版权非我所有】