如何判断CString类型是否为空

CString strTemp;
 if (strTemp.IsEmpty())
 {
  AfxMessageBox(_T("空"));
 }
 if (strTemp.GetLength()==0)
 {
  AfxMessageBox(_T("空"));
 }

突然感觉CString类真的挺好用,里面的很多函数用起来都很方便,什么Mid、Left、Right、Find。。。。。。

今天看到一个帖子,讨论了为什么高级程序员唾弃CString,学习了

http://topic.csdn.net/u/20110629/09/76808a23-76b2-478e-be47-9222b08d4230.html

CString不过就是一个类而已,而且,早就不是和MFC绑定的了。楼主研究下微软其他的库就知道了。如果这个类真的那么垃圾,微软何苦还要把它整合到其他的库里头呢?莫非这些人比微软那些搞底层库的童鞋水平更高?
楼上有提到可移植性的。对,这个的确是CString的问题。但是有点偏差,CString依赖于Windows平台,而不是什么MFC。
所以如果确定应用程序只用于Windows平台的话,那么用CString就好了,省的重复造轮子,这个没有什么对与错,只有合适不合适。
如果真的要讲可移植性,回到char *吧,这伙计哪里都能跑,连STL它都不依赖。

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
系统需求分析: 在学习了数据库之后,为了更进一步巩固所学知识,将其用于实践,我们选择了银行管 理系统,来完成最基本的一些操作。 功能 (1).客户:包括存款,取款,转账,查询余额,查看流水,密码修改这些功能 (2).管理员: 1.新增用户 2 .删除 3.查看 4.员工绩效(就是根据流水表中的员工号,select出员工一天内做的所有单,用 来考评绩效) 5.VIP判别(就是账户存储资金大于某个值的时候在账户表的一个字段上赋值为VIP) 6.资金储备金判别,当库存资金总数小于一个值的时候,系统对管理者要提出风险警告 。 3.功能流程图: 详细设计: 1.E-R图模型 2.根据E-R图设计关系表 (1).银行信息表(bank) "字段名 "字段类型及长度"允许空 "主键 " 说明 " "Bid " nchar(9) " no " PK "银行号 " "Bname " nchar(20) " no " "银行名 " "Bmoney " " no " "银行余额 " " "numeric(20,3) " " " " (2).客户信息表(custom) "字段名 "字段类型及长度"允许空 "主键 " 说明 " "Cid " nchar(9) " no " PK " 客户ID " "Cname " nchar(10) " no " " 客户姓名 " "Cpass " nchar(10) " no " " 密码 " "Ctime " nchar(20) " no " " 注册时间 " "Bid " nchar(9) " no " " 所在银行行号 " " " " " "外码(Bank(Bid)" " " " " ") " "Crmoney" " no " " 账户余额 " " "numeric(10,3) " " " " "Cphone " nchar(11) " no " " 客户电话 " (3).员工(管理员)表(staff) "字段名 "字段类型及长度"允许空 "主键 " 说明 " "Sid " nchar(9) " no " PK " 员工ID " "Sname " nchar(10) " no " " 员工姓名 " "Spass " nchar(10) " no " " 登陆密码 " "SItime " nchar(20) " no " " 入行时间 " "Sphone " nchar(11) " no " " 联系电话 " (4).流水信息表 "字段名 "字段类型及长度 "允许空 "主键 " 说明 " "Oid " nchar(9) " no " PK " 流水号 " "Cid " nchar(9) " no " " 客户ID " " " " " "外码(Custom(Cid)) " "Bid " nchar(9) " no " " 银行ID " " " " " "外码(Bank(Bid)) " "Sid " nchar(9) " no " " 员工ID 外码(Staff(Sid " " " " " ")) " "Otype " smallint " no " " 操作类型 " "Otime " nchar(20) " no " " 操作时间 " "Omoney " " yes " " 交易金额 " " "numeric(10,3) " " " " "OBmoney " " yes " " 上次余额 " " "numeric(10,3) " " " " "OAmoney " " yes " " 账户余额 " " "numeric(10,3) " " " " 三个实体:bank,staff,custom 一个联系:operate 关系图: 程序代码: 客户部分: a. void CClientDlg::OnButtonIn() //存款函数 { // TODO: Add your control notification handler code here CInDlg InDlg; if (InDlg.DoModal()==IDOK) {double temp,temp1; ADOConn ado; CString sql = "select * from Custom where Cname='"+Cname+"'"; _RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql); CString str = (LPCTSTR)(_bstr_t)ResultSet- >GetCollect("Crmoney"); CString bid = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Bid"); CString str4 = (LPCT
BOOL ControlsInitialization(HWND hWnd);//从控件句柄初始化 void ObjectInitialization(CComPtr<IDispatch> pDisp);//对象初始化 CString TenToHtmlColor(DWORD CurColor);//将整数型的颜色值转换为网页支持的格式 void WebComplete(HWND hWnd,int Timedelay=0/*单位:毫秒 为空则一直等待*/);//确认网页已经完全载入 HWND GetIesHandle(HWND hWnd);//可以指定父句柄获取IES句柄 BOOL GetAllIesHandle(HWND hParent);//获取所有取已打开的所有网页窗口句柄 CArray <HWND,HWND&>m_hWnd;//返回的所有已打开窗口句柄数组 int WebpageNavigate(CString Strurl);//载入某个网址。 int WebpageWriteTextStream(CString StrTextStream);//写超文本流。 CComPtr<IHTMLDocument2> GetWebpageObject();//取网页对象 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下为网页框架(frame)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下为网页按钮(Button)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ int ButGetIndex(CString NameOrID);//按钮取索引返回第一个满足条件的索引值,如果失败返回0 CString GetButName(int i);//获取指定索引按钮元素name(名称) CString GetButId(int i);//获取指定索引按钮元素id int GetButCount();//返回网页内所有按钮的数目 int ButClick(int i);//按钮按索引点击成功返1失败返回0 CString GetButHtml(int i);//获取指定索引按钮元素代码 CString GetButText(int i);//获取指定索引按钮元素文本 CComPtr<IDispatch> Object_GetButObject(int i);//获取指定索引按钮对象 CString GetButValue(int i);//获取指定索引按钮标题 CString GetButType(int i);//获取指定索引按钮(Button)的类型(type),“button”、“submit”、“reset” /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下为网页Div~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ int GetDivCount();//返回网页内所有Div的数目 CComPtr<IDispatch> Object_GetDivObject(int i);//获取指定索引DIV对象 CString GetDivHtml(int i);//获取指定索引Div元素代码 CString GetDivText(int i);//获取指定索引Div元素文本 CString GetDivName(int i);//获取指定索引Div元素name(名称) CString GetDivId(int i);//获取指定索引Div元素id int GetDivIndex(CString NameOrID);////Div取索引返回第一个满足条件的索引值,如果失败返回0 int DivClick(int i);//Div按索引点击成功返1失败返回0 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下为网页隐藏表单(hidden)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ int GetHiddenCount();//返回网页内所有隐藏表单的数目 CString GetHiddenName(int i);//获取指定索引隐藏表单元素name(名称) CString GetHiddenId(int i);//获取指定索引隐藏表单元素id CString GetHiddenValue(int i);//获取指定索引隐藏表单元素标题 int GetHiddenIndex(CString NameOrID);////隐藏表单取索引返回第一个满足条件的索引值,如果失败返回0 CComPtr<IDispatch> Object_GetHiddenObject(int i);//获取指定索引隐藏表单对象 CString GetHiddenHtml(int i);//获取指定索引隐藏表单元素代码 CString GetHiddenText(int i);//获取指定索引隐藏表单元素文本 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下为网页表格(table)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ int GetTableCount();//返回网页内所有表格的数目 CString GetTableName(int i);//获取指定索引表格元素name(名称) CString GetTableId(int i);//获取指定索引表格元素id int GetTableIndex(CString NameOrID);//表格取索引返回第一个满足条件的索引值,如果失败返回0 CString GetTableHtml(int i);//获取指定索引表格元素代码 CString GetTableText(int i);//获取指定索引表格元素文本 int GetTableCellCount(int i);//获取指定索引表格单元格数量 int GetTableRowCount(int i);//获取指定索引表格的行数 CString GetTableDistributionCount(int i);//返回文本格式:“第1行x列,第2行x列,…,第N行x列” CComPtr<IDispatch> Object_GetTableCellObject(int i,int row, int j);//获取单元格元素接口(第一个参数指定第几个表格,第二个参数指定第几行,第三个参数指定第几个单元格) CString GetTableCellText(int i,int row, int j);//获取单元格文本(第一个参数指定第几个表格,第二个参数指定第几行,第三个参数指定第几个单元格) CString GetTableCellHtml(int i,int row, int j);//获取单元格源码(第一个参数指定第几个表格,第二个参数指定第几行,第三个参数指定第几个单元格) CComPtr<IDispatch> Object_GetTableObject(int i);//获取指定索引表格对象 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下为网页图片~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ CString GetImageName(int i);//获取指定索引图片元素name(名称) CString GetImageId(int i);//获取指定索引图片元素id int ImageClick(int i);//图片按索引点击成功返1失败返回0 int GetImageIndex(CString NameOrID);////图片取索引返回第一个满足条件的索引值,如果失败返回0 int GetImageCount();//返回网页内所有图片的数目 CString GetImageHref(int i);//获取指定索引图片连接地址 CString GetImageSrc(int i);//获取指定索引图片地址 CBitmap *GetImage(int i=NULL, CString vImageIDorName=NULL,int cx=NULL/*图片宽度*/,int cy=NULL/*图片高度*/);//参数1获取指定索引图片如果为NULL请指定参数2的图片Id或Nname /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下为网页单选框(radio)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ BOOL GetRadioChecked(int i);//检查单选框(radio)是否被选中(checked),1为选中,0为未选中 BOOL SetRadioWhetherSelect(int i,int Select);//设置单选框(radio)选中状态,第一个参数填写第几个单选框(radio)第二个添写是否选中(1为选中,0为未选中) CString GetRadioName(int i);//获取指定索引单选框(radio)元素name(名称) CString GetRadioId(int i);//获取指定索引单选框(radio)元素id CString GetRadioValue(int i);//获取指定索引单选框(radio)元素标题 int GetRadioCount();//返回网页内所有单选框(radio)的数目 CComPtr<IDispatch> Object_GetRadioObject(int i);//获取指定索引单选框(radio)对象 int GetRadioIndex(CString NameOrID);//单选框(radio)取索引返回第一个满足条件的索引值,如果失败返回0 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下为网页复选框(checkbox)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ BOOL GetCheckboxChecked(int i);//检查复选框(checkbox)是否被选中(checked),1为选中,0为未选中 BOOL SetCheckboxWhetherSelect(int i,int Select);//设置复选框(checkbox)选中状态,第一个参数填写第几个复选框(checkbox)第二个添写是否选中(1为选中,0为未选中) CString GetCheckboxName(int i);//获取指定索引复选框(Checkbox)元素name(名称) CString GetCheckboxId(int i);//获取指定索引复选框(Checkbox)元素id CString GetCheckboxValue(int i);//获取指定索引复选框(Checkbox)元素标题 int GetCheckboxCount();//返回网页内所有复选框(Checkbox)的数目 CComPtr<IDispatch> Object_GetCheckboxObject(int i);//获取指定索引复选框(Checkbox)对象 int GetCheckboxIndex(CString NameOrID);//复选框(Checkbox)取索引返回第一个满足条件的索引值,如果失败返回0 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下为网页组合框(Select)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ int GetSelectCount();//返回网页内所有组合框(Select)的数目 int GetSelectOptionCount(int i);//取某个组合框(Select)中的选项(option)的数目 int GetSelectItem(int i);//取组合框(select)现行选中项(0为位置1,1为位置2……) int SetSelectItem(int i,int setect);//选中指定名称的组合框(Select)的指定索引的选项(options) CString GetSelectItemText(int i,int j);//取组合框(Select)中某个选项(options)的文本(value)参数一为第几个组合框第二参数为组合框第几项 CString GetSelectName(int i);//取的某个组合框(Select)的名称(name) CString GetSelectId(int i);//取的某个组合框(Select)的Id int GetSelectIndex(CString NameOrID);//组合框(Select)取索引返回第一个满足条件的索引值,如果失败返回0 CComPtr<IDispatch> Object_GetSelectObject(int i);//取的某个组合框(Select)的对象(Object) /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下为网页表单(Form)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ int GetFormIndex(CString NameOrID);//表单(Form)取索引返回第一个满足条件的索引值,如果失败返回0 int GetFormCount();//返回网页内所有表单(Form)的数目 CString GetFormName(int i);//取的某个表单(Form)的名称(name) CString GetFormId(int i);//取的某个表单(Form)的Id void GetFormSubmit(int i);//提交某个表单(Form) CComPtr<IDispatch> Object_GetFormObject(int i);//取的某个表单(Form)的对象(Object) /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下为网页文本框(Text)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ int GetTextboxIndex(CString NameOrID);//文本框(Text)取索引返回第一个满足条件的索引值,如果失败返回0 void SetTextboxText(int i,CString StrTxt);//按索引填写文本框(Text) CString GetTextboxText(int i);//读取某个文本框(Text)内的内容(value) int GetTextboxCount();//返回网页内所有文本框(Text)的数目 CString GetTextboxType(int i);//取得某个文本框(Text)的类型类型分为“text”、“password”、“file” CString GetTextboxName(int i);//取的某个文本框(Text)的名称(name) CString GetTextboxId(int i);//取的某个文本框(Text)的Id CComPtr<IDispatch> Object_GetTextboxObject(int i);//取的某个文本框(Text)的对象(Object) /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下为网页多行文本框(TextArea)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ void SetTextAreaText(int i,CString StrTxt);//按索引填写多行文本框(TextArea)索引从1开始 CString GetTextAreaText(int i);//读取某个多行文本框(TextArea)内的内容(value) int GetTextAreaIndex(CString NameOrID);////多行文本框(TextArea)取索引返回第一个满足条件的索引值,如果失败返回0 int GetTextAreaCount();//返回网页内所有多行文本框(TextArea)的数目 CString GetTextAreaName(int i);//取的某个多行文本框(TextArea)的名称(name) CString GetTextAreaId(int i);//取的某个多行文本框(TextArea)的Id CComPtr<IDispatch> Object_GetTextAreaObject(int i);//取的某个多行文本框(TextArea)的对象(Object) /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下为网页超链结(url)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ int LinkClick(int i);//超链结(url)按索引点击成功返1失败返回0 CString GetLinkHref(int i);//获取指定索引超链结(url)地址 int GetLinkCount();//返回网页内所有超链结(url)的数目 int GetLinkIndex(CString NameOrID);//超链结(url)取索引返回第一个满足条件的索引值,如果失败返回0 CString GetLinkHtml(int i);//获取指定索引超链结(url)元素代码 CString GetLinkText(int i);//获取指定索引超链结(url)元素文本 CComPtr<IDispatch> Object_GetLinkObject(int i);//取的某个超链结(url)的对象(Object) /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下为网页获取对象(Object)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ CComPtr<IDispatch> Object_GetObject_Aggregate(CString tag);//获取基于指定元素名称的对象集合(getElementsByTagName),参数1可添写如:“a”、“table”、“div”、“img”. CComPtr<IDispatch> Object_GetObject_NameOrID(CString NameOrId, int i);//按名称或ID取网页元素对象,参数1(元素名称或ID)参数2(0=名称(name),1=ID) CComPtr<IDispatch> Object_GetObject_Point(int x, int y);//返回指定 x 和 y 坐标的网页元素对象(elementFromPoint) /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下为网页对象(Object)操作~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ void ObjectOperation_ExecutionEvent(CComPtr<IDispatch> pDisp,CString Event);//执行某个网页元素相关的脚本方法,事件名称一般是“onclick” void web_RunScript(CString Script,int type);//在当前网页上执行指定的脚本命令,参数1为脚本,参数2(添写1即为:JavaScript 业写2为:VBScript) void web_InsertCode(CString StrCode);//在网页插入网页HTML代码及自定义内容 void Destruction();
字符转的各种转换函数库,用这个库,字符串的各种转换再也不头疼 //-------------字符串转数字-------------- int CString_numberStr_2_int(CString str); int stdString_2_int(std::string str);//std string 字符串转int int std_hexString_2_int(std::string str);//std string 字符串转int double CString_2_double(CString in); double stdString_2_double(std::string str);//std string 字符串转double unsigned int hexString_2_u32(std::string str); //-------------数字转字符串-------------- CString CString_int_2_numberStr(int n); CString CString_int_2_numberStr6(int n); std::string stdString_int_2_numberStr(int a); CString double_2_number_CString(double n); std::string double_2_number_String(double a); CString GetCurrWorkingDir(); //获得当前工作路径,不含最后一个字符“\” CString ascii_2_cstring(int ascii);// 把ascii字符转换成对应的字符,返回cstring类型 //-------------字符串转字符串-------------- std::string CString_2_stdString(CString str); CString stdString_2_CString(std::string str); void CString_2_charP(CString str,char *q); //cstring change to ansi string //-------------判断字符串类型-------------- bool is_a_double_type_string(CString str); //-------------字符串复杂操作-------------- int break_string(std::string instr, std::string subStr, vector<std::string>* subs); //以subStr为标记切割instr为多个单词,存储于subs std::string super_CString::getTimeString(bool fgf);//获得表示当前时间的字符串,fgf表示是否需要分隔符 std::string super_CString::getDateTimeString(bool fgf);//获得表示当前时间和日期的字符串,fgf表示是否需要分隔符 std::string getDateString(bool fgf); //获得表示当前日期的字符串,fgf表示是否需要分隔符 std::string string_trim_LR_space(std::string str);//去除字符串前后的空白字符 std::string string_trim_L_space(std::string str);//去除字符串左边的空白字符 std::string string_trim_R_space(std::string str);//去除字符串右边的空白字符 //-------------GUI相关-------------- CString get_CEdit_text(CEdit* edit); //-------------文件、路径相关-------------- CString calc_CurrWorkingDir_filename(CString str);//返回程序运行的当前路径+filename CString calc_work_full_filename(CString filename,CString path);//path为路径,如果path为空返回程序运行的当前路径+filename,否则返回path+filename。 std::string GetCurrWorkingDir_stdString(); std::string calc_CurrWorkingDir_filename(std::string str); std::string calc_work_full_filename(std::string filename,std::string path);

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

读万卷书不如行万里路呀

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值