hur.cn - 华软网

 热门搜索

VC的Unicode编程环境下,使用TCHAR、wchar_t和CString哪个更好?

  作者:未知    来源:网络    更新时间:2010/12/6
VC的Unicode编程环境下TCHAR、wchar_t和CString都能够运用,我不知道用哪一个好?

TCHAR系列兼容ANSI,
wchar_t系列是纯洁的Unicode宽字节编程
CString也是兼容ANSI,但它的求字符串长度跟ANSI环境下不一样。

从可持续发展的角度看,我希望两点:
1、代码尽量高效;
2、以后离开了windows系统,我的代码也能用。

请高手们指点一下,这三种类型用哪种对照好?或这三个都欠好,有没有更好的?
---华软 网友回答---
TCHAR
CString 是windows的,离开windows不太好用的!
---华软网友回复---
TCHAR
CString 是windows的,离开windows不太好用的!
---华软网友回复---
TCHAR, 
wstring也行啊跨平台的
---华软网友回复---
尽量用宽字节吧
如果思量程序通用性,即ASCII和UNICODE都好用的话,只有用TCHAR好点,CString是MFC中的东西,虽然好用,但要多加些东西,如果是MFC程序,当然用CString更方便.

对于效率来说,当然是用基本类型更好,不过你自己写的算法不一定有MS的CString效率高.
---华软网友回复---
我觉得关头照旧看在那里用,用来做什么。如果当前没有很明确的跨平台需求我觉得就用CString最方便。由于如果当前不是做多平台开发,那开发时应该专注于本平台的应用。以后真的需要跨平台时再搞移植是很正常也很通用的方法。
---华软网友回复---
也就是说,在Windows环境下,不论是unicode编程照旧ansi编程,CString好用。
离开了windows,用TCHAR是吧?
---华软网友回复---
SDK用TCHAR,MFC用CString对照方便点
---华软网友回复---
要脱离WINDOWS 用 规范C++   char

---华软网友回复---
TCHAR
能够在不同字符集的情况下运用
---华软网友回复---
TCHAR或是CString 都能够,而且他们能够既用于ANSI,又用于UNICODE
---华软网友回复---
TCHAR吧
通用性更好一些
---华软网友回复---
建议运用CString 我这有CString 这个可移植类 相当好用
---华软网友回复---
当然是TCHAR。

---华软网友回复---
规范C++有TCHAR吗?
---华软网友回复---
CString msg;
msg.Format(_T("资料 %s 已经存留,要笼罩它吗?"), database_file);
int answer=MessageBox(msg, _T("笼罩已经存留的资料吗?"), MB_ICONQUESTION|MB_YESNO);


这一段VC6代码,如果用TCHAR来写,该怎么写?响应地,MessageBox应该用规范C++里面的什么来取代?
---华软网友回复---
引用 7 楼 visualeleven 的回复:
SDK用TCHAR,MFC用CString对照方便点

赞成
---华软网友回复---
引用 15 楼 woshihuzi 的回复:
CString msg;
msg.Format(_T("资料 %s 已经存留,要笼罩它吗?"), database_file);
int answer=MessageBox(msg, _T("笼罩已经存留的资料吗?"), MB_ICONQUESTION|MB_YESNO);


这一段VC6代码,如果用TCHAR来写,该怎么写?响应地,MessageBox应该用规范C++里面的什么来取代……

MessageBox基本不是规范C里面的东西
---华软网友回复---
MessageBox是Windows的API,不属于c/c++!如果开发跨平台的程序,运用跨平台的图形界面库(若有需求)+规范库+其余各种功能的跨平台库(若有需求)
---华软网友回复---
跨平台的图形界面库有哪些?
---华软网友回复---
// 建立数据库
TCHAR* database_file = _T("mdb.mdb");  
CDaoDatabase myDatabase;  
myDatabase.Create(database_file);  

// 建立表dict
TCHAR* TableName = _T("dict");
CString sqlStr = "";
sqlStr = sqlStr + "create table " + TableName + "(姓名 string(50), 成绩 long)";
myDatabase.Execute(sqlStr);
==============================================
我这段代码是TCHARheCString混用的,如何改成纯TCHAR呢?我觉得CString的字符串直接相加很好用,如果思量到代码复用,改用TCHAR的话,该怎么修改这段代码中的CString?

---华软网友回复---
自己顶一下,期待高手解答。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。