没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|其它|编辑:郝浩|2009-08-20 10:59:10.000|阅读 412 次
概述:上次写了一点从c#到c++容易出现的一些问题, 今天接着写一点, 上一篇文章主要把精力集中在.H文件,命名空间等工程所需要的一些地方,今天主要说一说从语言的角度来说一些类型与c#迥然不同的用法.
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
上次写了一点从c#到c++容易出现的一些问题, 今天接着写一点, 上一篇文章主要把精力集中在.H文件,命名空间等工程所需要的一些地方,今天主要说一说从语言的角度来说一些类型与c#迥然不同的用法.
1. 枚举类型:
c++的枚举类型用法非常的灵活,但是也带来一些很不方便的地方.下面是一段正常的c++的枚举类型的使用:
1: # include <string>
2: # include <iostream>
3:
4: using namespace std;5:
6: enum Emotion7: {
8: Happy = 0,
9: Sad = 1,
10: Exciting = 2,
11: };
12:
13: #define Love Emotion(4);14:
15: void main()16: {
17: Emotion emotion = Love;
18: Emotion emotion2 = Emotion::Exciting;
19:
20: cout << (int)emotion << endl;21: cout << (int)emotion2 << endl;22: }
从代码上可以看到,首先是定义了一个Emotion的枚举,在使用的时候,既可以在枚举类型的前面加上枚举的说明符,又可以不加上.得到的结果是一样的.这里要注意一下13行的#define,枚举类型不仅可以再enum { }中定义,还可以再花括号之外定义.这种方法我是在d3d的头文件定义中看到的.
下面再看一段代码
1: enum Emotion2: {
3: Happy = 0,
4: Sad = 1,
5: Exciting = 2,
6: };
7:
8: enum Test9: {
10: Happy = 5;
11: Others = 6;
12: };
按c#的理解来说,这段代码应该是完全没有问题的,Emotion和Test属于两个不同的域,但是c++没有枚举域这个概念,其实c++的枚举定义更像是一堆的#define,上面的代码有编译错误,告诉我有Happy枚举量重定义. 上面的代码可以按这样的方式来理解:
1: #define Happy 0;2: #define Sad 1;3: #define Exciting 2;4:
5: #define Happy 5;6: #define Others 6;但是不同的,这段代码就没有编译错误了,只是一个warning.
2. WCHAR, CHAR, TCHAR以及相关的问题.
这个问题其实网上有很多的文章来详细的描述,我只是谈谈我个人的一些感想以及总结一下网上查到的内容.
对于c++可没有这么多的字符种类.一个String就可以包含所有的字符,而且还不需要进行转换.但是对于c++就不一样了,c++由于兼容c语言的一些特性,char类型就是代码ASCII码里面的字符,如果要描述中文,日文等等字符就需要对原来的char类型进行扩展,也就是UNICODE码,在c++里面被称为wchar_t类型.
对于VC,认为wchar_t看起来不好看(我不知道最后的't'是什么意思)于是就将wchar_t定义成了WCHAR,其实两者之间是等价的.
对于对WCHAR*字符串进行赋值的时候,注意要加上一个L宏,也就比如
1: WCHAR* wStr = L"Hello World";TCHAR是一种为了统一两者的命名.下面这两句话可以很清楚的说明问题.
定义了_UNICODE: typedef wchar_t TCHAR ;
没有定义_UNICODE: typedef char TCHAR ;TCHAR的宏是_T,TEXT,_TEXT,三者是等价的.
下面给出一些常用的字符串函数的不同定义(针对WCHAR与char)
1: size_t strlen( const char *string );2: size_t wcslen( const wchar_t *string );3:
4: char *strcpy( char *strDestination, const char *strSource );5: wchar_t *wcscpy( wchar_t *strDestination, const wchar_t *strSource );6:
7: char *strcat( char *strDestination, const char *strSource );8: wchar_t *wcscat( wchar_t *strDestination, const wchar_t *strSource );9:
10: int strcmp( const char *string1, const char *string2 );11: int wcscmp( const wchar_t *string1, const wchar_t *string2 );
最后说说宽字符与普通字符之间的转化:
一般大家使用现成的函数MultiByteToWideChar,与WideCharToMultiByte函数
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:博客园面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号