程序中unicode与多字节字符集的相关问题
来源:互联网 发布:弱点 知乎 编辑:程序博客网 时间:2024/05/21 19:44
首现介绍所遇到问题的背景,之前的程序是vc6.0的版本,现在要移植到vs2008上做开发,移植过来后出现了报了很多数据类型之间转换的错误。
典型的问题部分代码如下:
CString path;
path=".\\bocai.txt";
FILE *fp;
fp=fopen(path,"w");
报的错误如下:error C2664: “fopen”: 不能将参数1 从“CString”转换为“const char *”
后来查了相关的资料,总结的原因主要与编译器所使用的字符集有关。
在vc6.0中默认的字符集是多字节字符集,vs2008中默认的是unicode,在vc6.0转到vs2008时就出现了上述的问题。关于unicode与多字节字符集的区别会在单独一篇文章中再讨论。
这里给出我试过的 几种解决方案:
解决方法1:项目—>属性—>常规,将字符集的选项有unicode改为多字节字符集。
解决方法2:将fopen改为_tfopen版本,字符串前加上宏_T(),代码如下:
CString path;
path=".\\bocai.txt";
FILE *fp;
fp=_tfopen(path,_T("w"));
因为,fopen是c语言的库函数,是ascii字符集版本的函数,_tfopen适用与ascii或unicode字符集,在字符串前加上宏_T()可以保证字符串的兼容性。
解决方法3:改为c++的写法,代码如下:
CString path;
path=".\\bocai.txt";
ofstream outfile;
outfile.open(path);
- 程序中unicode与多字节字符集的相关问题
- Unicode与多字节字符集
- unicode字符集与多字节字符集的转换
- UNICODE与多字节字符集等字符问题
- UNICODE与多字节字符集等字符问题
- CString与int的转换(Unicode与多字节字符集)
- UNICODE与多字节字符集的区别及转换
- VC++中字符串转换CString, char*, BSTR, 多字节,unicode字符集转换的问题
- Window中ASCII字符集,多字节字符集,UNICODE 字符集
- unicode和多字节字符集的区别
- 【计算机基础】Unicode字符集 与 多字节字符集
- “使用多字节字符集”和“使用Unicode字符集”下的字符串的长度问题
- 关于VC多字节字符集和unicode宽字符集的使用和问题(转)
- Unicode字符集与多字节字符集(这里的字符指的是字符变量,统称Char TCHAR WCHAR之类相关的东西
- MFC 对话框使用 Unicode 字符集与使用多字节字符集的不同
- VS 字符集:Unicode和多字节字符集的区别与联系
- Unicode编码&&多字节字符集
- Unicode字符集 和 多字节字符集 关系
- 多线程
- java农历/旧历的计算代码
- ORA-01950: 表空间'USERS'中无权限
- MTK LCD+KEYPAD背光驱动
- 面向对象的3个基本要素和5个基本设计原则(整理)
- 程序中unicode与多字节字符集的相关问题
- 【CSDN常见问题解答】Java Socket通信(TCP/UDP)
- C语言中结构体在函数中的应用
- Sicily 1500. Prime Gap
- NODEjs完整项目实践
- Delphi7 中类说明
- 网络安全技术简介
- C语言查看内存数据 打开内存窗口
- 基于visual Studio2013解决C语言竞赛题之1036递归求值