T: | 关于unicode,把包含中文的CString的各个char取出来 |
Q: | CString str="12ab大小"; 用什么方法能转变成下面的形式 char ch(20); ch(1)="1"; ch(2)="2"; ch(3)="a"; ch(4)="b"; ch(5)="大"; ch(6)="小"; |
A: | 有点乱 定义数组应该用char ch[20]; 字符赋值应该用ch[0]='1';ch[1]='2';用单引号 注意中文是两个char的长度,是不能用ch[4]='大';的 我这里有一个在不同的代码页下边里字符串里面的字的小程序,你看一下 int main(int argc, char* argv[]) { char *str="abc中文字符def"; char *p=str,*p1; unsigned short ch; while(strcmp(p,"")!=0) { p1=CharNextExA(1250,p,0); int i=p1-p; if(i==1) { ch=(unsigned char)*p; }else if(i==2) { ch=(*p)*256+*(p+1); } p=p1; { } } return 0; } |
T: | 有关VARIANT的问题 |
Q: | 请问如何把VARIANT类型转化成cstring;它的具体用法到底如何?有没有详细的文章和实力?谢谢,谢谢。 |
A: |
这样子,一个例子,我觉得还是CString类型比较好用,所以我一般都转成CString类型后再进一步处理 CString str=""; _variant_t var; var=m_pRecordSet->GetCollect("姓名"); if(var.vt!=VT_NULL) str=(LPCTSTR)(_bstr_t)var; else str=""; ……………… |
T: | 怎样把CString转换成_variant_t? |
Q: | 1.在ado操作中,怎么样把CString转换成_variant_t?请给出例子,谢谢! 2. CString s; LPTSTR temp=(LPTSTR)(LPCTSTR)s; 以上两句运行时出错,跟踪进去到此处: _AFX_INLINE CString::operator LPCTSTR() const { return m_pchData; } 请问是怎么回事? |
A: | 1: CString str="sdafkljjksafd"; _variant_t str1((LPCTSTR)str); 2: 如果仅仅是这么两句就出问题的话,应该是你的s没有初始化的缘故 |
T: | 怎么从 _bstr_t 型的字符串中取出想要的子串 |
Q: | _bstr_t aaa="PATHNAME_E4M6Q2I8" 现在我想要 bbb="M6Q2I8" 请问大虾,有什么函数可以从aaa 得到 bbb,谢谢 |
A: | _bstr_t aaa="PATHNAME_E4M6Q2I8" CString aaa1=(LPCTSTR)aaa; CString bbb1=aaa1.Right(6); _bstr_t bbb=(_bstr_t)(LPCTSTR)bbb1; 呵呵,实现繁了点,看看楼下有没有好一些的方法 |
T: | CString类型长度问题,急 |
Q: | CString str="字a符b汉字2"; 怎样能得出这个字符串的长度是7/ 即一个汉字算一个,一个字母或数字算一个 |
A: | CString str("字a符b汉字2"); BSTR bstr = str.AllocSysString(); int a=wcslen(bstr); |
T: | 一个菜问题:如何把char[]标准串转换成BSTR |
Q: |
好像可以用如:L"test"转(例程中看到的),但找不到“L”是个什么东东 :( 若有: char szTmp[128]; sprintf(szTmp,"test"); 如何将szTmp转成BSTR呢? 菜问题请教DX了! |
A: | char szTmp[128]; sprintf(szTmp,"test"); CString str=szTmp; BSTR str1=str.AllocSysString(); ::SysFreeString(str1); |
T: | 那位大虾告诉我如何在程序中将UTF-8编码转换为ANSI,马上结贴 |
Q: | 那位大虾告诉我如何在程序中将UTF-8编码转换为ANSI,马上结贴!!!!! |
A: | #include "Windows.h" int main(void) { char str[256]={0xE4, 0xBD, 0xA0, 0xE5 ,0xA5 ,0xBD, 0x61, 0x62 ,0x63,0} ; unsigned short int strA[256]; MultiByteToWideChar(CP_UTF8,0,(char*)str,-1,strA,256); WideCharToMultiByte(CP_ACP,0,strA,-1,str,256,NULL,NULL); return 0; } |
T: | 各位高手的大讨论(请看这段代码有什么错)参与者有分,请各位发表观点 |
Q: | LPWSTR AnsiToUnicode(LPCSTR lpcstr) //参数lpcstr类型也可是char* { LPWSTR Pwstr; int Cb,i; Cb=strlen(lpcstr)*sizeof(LPCSTR); Pwstr=LocalAlloc(LMEM_FIXED,Cb); i=MultiByteToWideChar(CP_ACP,0,lpcstr,-1,Pwstr,0); MultiByteToWideChar(CP_ACP,0,lpcstr,-1,Pwstr,i); return (Pwstr); } 函数功能:将ANSI转换成UNICODE:问题如下: 1:首先此函数运行正常,但有一个缺点(个人观点),那就是在用 Cb=strlen(lpcstr)*sizeof(LPCSTR);函数分配固定内存时,多分配了内存,造成内存浪费。个人认为:应这样写Cb=2*(strlen(lpcstr)+1); 不知有错没有,请各位指教。 2:如果Cb=strlen(lpcstr);这样程序照样运行正常,但实际上分配的固定内存并不够,不够的部分占用了堆中其它未用的内存快。这部分内存快很容易被其他人分配用掉,所以Pwstr值很有可能会被冲掉(冲掉的是未够分配的内存)。 不知以上分析的对不对,请各位指教 |
A: | LPWSTR AnsiToUnicode(char* lpcstr) //参数lpcstr类型也可是char* { LPWSTR Pwstr; int i; i=MultiByteToWideChar(CP_ACP,0,lpcstr,-1,NULL,0); Pwstr=new WCHAR[i]; MultiByteToWideChar(CP_ACP,0,lpcstr,-1,Pwstr,i); return (Pwstr); } 顺便说一下,你这种在程序内部new、外部释放的做法如果不明显说明的话非常容易引起内存泄漏! |
T: | 请问Unicode和编码的转换问题.100分,不成敬意. |
Q: | 请问Unicode的汉字和编码制的转换.还包括两种代码的转换 分为两部分: 1.我有 554A 这个码,怎么显示出"啊"字. 2.就是反向的问题了. 我刚刚接触到Unicode.一窍不通,请各位详细指点.多谢!多谢 另外我是在标准C下作的,所以所涉及到的编译条件什么的,也请指点. |
A: |
554A 确实是啊的UNICODE编码,这样转换 #include <comdef.h> WCHAR* str1=L"啊dsfa";//一个UNICODE字符串 _bstr_t str2=str1; char* str=str2;//str3就是普通字符串 反过来也一样 char* str3="啊dsfa";//普通字符串 _bstr_t str2=str3; WCHAR* str1=str2; |
相关文章
- JQuery获取当前元素的上一个/下一个兄弟级元素,字符串截取,转换大小写等元素的方法
- [Python爬虫] 中文编码问题:raw_input输入、文件读取、变量比较等str、unicode、utf-8转换问题
- C/C++中ASCII与Unicode字符串相互转换
- Mybatis的分页插件PageHelp:Page对象中的pageSize等属性无法序列化,无法转换为json字符串
- Window下wchar_t与char字符串之间的转换
- 关于MultiByteToWideChar与WideCharToMultiByte代码测试(宽字符与多字节字符的转换)以及字符串的转换代码测试
- Algorithm: 字符串转换为 unicode 字节数组
- 十六进制Unicode编码字符串与中文字符串的相互转换
- Ansi、Unicode、UTF8等编码字符串之间的转换和写入文本文件(学习中……)
- C/C++ 各种字符编码字符串的转换 可用于XML文件的字符转化读写 (收集 GBK - UTF8 - Unicode - ANSI )