返回首页

简介
在STL库,是一个阶级,这是所谓的性病::字符串,它可以做很多优秀的额外的工作,没有任何额外的代码。然而,有没有像MFC在其方法的格式()方法,和我开始写一个类可以做到这一点:工作:字符串。
String类可以格式化字符串,如果你在MFC中的format()方法,但我们并不需要的MFC确实。因此,我们可以直接使用字符串,而不是CStringT。在这个类提供下面的成员函数:运营商(= = CHAR(),c_str(),=,==,<=,GT,LT,GT;,[])tolower的ToUpper的(),()MID(),左(),右()比较(),CompareNoCase()反向(),REPLACE(),删除(),插入(),删除(),空()TrimLeft(),TrimRight()查找(),FindOneOf(),ReverseFind()格式()GetBufferSetLength的GetBuffer(),(),ReleaseBuffer(),GetLength的()的isEmpty()GetAt(),SetAt()如何使用这个类
下面的例子说明我们如何使用这个类:

#include <string>

#include "string.hpp"



String s1;

s1 = "abc";

s1 += std::string("123") + "123";

String s2 = s1.Reverse(); 

s2.Format("%d,this,%c",123,'c');

char* ptr_data = s2.CHAR();

...
缺乏的代码
我没有在这个类中添加一些平台相关的功能,因为我想用它作为一个平台独立的阶级。下列清单显示CStringT的成员,在MFC的CStringT使用,但不包括在String类的功能:AllocSysString()SetSysString()LoadString时()AnsiToOem()OemToAnsi()结论
这篇文章我写的代码只是一个小用法。您可以使用它,无论你在MFC中使用您的CStringT。|卡尔戈

回答

评论会员:非常漂亮的BR/ 时间:2011/12/06
??sborford
评论会员:游客 时间:2011/12/06
当我尝试编译的代码示例一块,我得到102个错误和24警告。下面是首当其冲。C:\AVT\WINDOWS\测试\StlString\string.hpp(51):警告C4018:'':符号/无符号不匹配C:\AVT\WINDOWS\测试\StlString\string.hpp(51):警告C4018:':参考":缺少存储类或类型说明符(顺便说一句,你需要添加varargs.h包括string.hpp文件列表。)提到的第一个实际的错误,va_start宏的参数是错误的。有两个正确的,但我怀疑,因为首先是不是一个regualr类型,宏看到不同。我有经验的程序员,而是一个相对的新手当谈到模板。你能提供一些建议吗?{B​​R}此外,有必要为模板函数的代码都在同一行吗?它的垂直结构紧凑,但难以阅读和manitain。
卡尔歌
评论会员:游客 时间:2011/12/06
{S0}哎呀,也许你能告诉我你使用的代码的代码,其中的一部分,如果可能的话,请告诉我什么是环境。它也欢迎联系我的电子邮件地址carol8421@hotmail.com我,因为我也是在学习编程,这是很好的方式赶上错误,我觉得。感谢!_!
sborford
评论会员:游客 时间:2011/12/06
我做了一些更多的上场代码,并得到它的工作。加入一个简单的"(INT)"投两个得罪conditinal业务涉及的性病很容易解决这两个"符号/无符号不匹配"警告:字符串的大小的方法。关于可变参数列表操作的警告和错误,包括与其他解决包括在顶部。hpp文件。最后,关于"T的警告和错误:参考"加入"typename的"关键字StringC类定义顶部的typedef解决,例如,将"的typedefTtraits_type";"的typedeftypename的Ttraits_type;"。这最后一个是新的VisualC。NET2003中的东西。根据MSDN的描述,它符合ISOC标准。再次感谢您的优秀提交。
的Sudhir曼格拉
评论会员:游客 时间:2011/12/06
似乎是一个尼斯添加曼格拉的Sudhirhttp://Programmerworld.nethttp://DevelopersVoice.com(免费的书籍,文章,源代码和编程工具和实用程序)