VS2010 CString转字符数组时,数组中每个字符后面都会多出一个\0 解决办法
来源:互联网 发布:js实现冒泡排序 编辑:程序博客网 时间:2024/04/30 03:48
CString转字符数组时,数组中每个字符后面都会多出一个\0 的原因:
是Unicode字符集的问题。选择项目->项目属 性(或直接按alt+F7)->配置属性,在右边找到“字符集”,将“使用Unicode字符集”改为“使用多字节字符集”。保存之后需要重新生成 解决方案,然后通过网上介绍的多种方法从CString转字符数组每个字符后面再也不会多出\0字符了。
实际应用中转换如下:
方法一:
char *p;
CString str="hello";
p=str.GetBuffer(str.GetLength());
str.ReleaseBuffer();
方法二:
CString str="hello";
char ch[20];
memcpy(ch,str,str.GetLength());
方法三:
char *ch;
CString str="hello";
ch=(LPSTR)(LPCTSTR)str;
在方法二中,最好不要使用memcpy,直接用strcpy_s(char*, CString)就可以了,因为用memcpy也会出现乱码尾巴。
如果不想改变Unicode字符集,网上也有介绍方法,但我没有试过,在此列出来供网友们参考:
CString strPath = L"adfafs主声音文件fsfsa";int nLength = strPath.GetLength();
int nBytes = WideCharToMultiByte(CP_ACP,0,strPath,nLength,NULL,0,NULL,NULL);
char* VoicePath = new char[ nBytes + 1];
memset(VoicePath,0,nLength + 1);
WideCharToMultiByte(CP_OEMCP, 0, strPath, nLength, VoicePath, nBytes, NULL, NULL);
VoicePath[nBytes] = 0;
0 0
- VS2010 CString转字符数组时,数组中每个字符后面都会多出一个\0 解决办法
- VS2012 CString转char*时,每个字符后面都会多出一个\0的解决办法
- 7.15 编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不用strcpy函数。拷贝时,'\0'也要拷贝过去,'\0'后面的字符不拷贝。
- 习题 6.15 编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中。不用strcpy函数。复制时,‘\0’也要复制过去。‘\0’后面的字符不复制。
- 将字符数组s2中全部字符复制到字符数组s1,不用strcpy(复制时‘\0’也要复制过去‘\0’后面的字符不用复制)
- 向字符数组中插入一个字符
- C语言中,利用宏定义一个字符串和字符数组定义的字符串其末尾都会自动添加\0字符
- VS2010运用Format将字符数组转化为CString 格式,并用AfxMessageBox()过程中出现转换乱码问题的解决方案
- 判断一个字符是否在一个字符数组中。
- 10.删除字符数组中每个超过k长以后的字符并输出删除后的字符数组
- 逐个字符复制一个C-串到字符数组中
- 一个简单的字符数组中字符的比较
- VC++中按特定标志字符实现字符串到字符串数组的分割(CString -> Cstring[])
- VC++中按特定标志字符实现字符串到字符串数组的分割(CString -> Cstring[])
- 有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好)
- 有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好)
- 有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好)
- 【c语言】将字符数组s2中的全部字符复制到字符数组s1中,不要用strcpy函数,'\0'也复制过去,'\0'后面的字符不复制
- RTCP协议详解
- linux下文件的复制、移动与删除
- Codeforces 490C Hacking Cypher【前缀模+后缀模+暴力】
- 编译运行出现:__NSCFConstantString countByEate:objects:count: ?
- codeforces #373 div2题解
- VS2010 CString转字符数组时,数组中每个字符后面都会多出一个\0 解决办法
- C++之“友元类”学习笔记
- 《c和指针》(七)
- HTML特殊符号对照表
- Biorhythms问题
- Linux信号实践(1) --Linux信号编程概述
- java中的Object类
- 数据结构实验之链表八:Farey序列
- 重载和重写的区别