文档库 最新最全的文档下载
当前位置:文档库 › string类

string类

string类
string类

字符串类

ZYZ

2014060103026 题目简述:

参考MSDN或者教材12章,设计和实现一个字符串类。

其成员函数参考表12-1和表12-2,算符参见表12-3。

系统设计

函数实现

由于自己不会实现string类中的函数,故将定义好的string类中的函数使用了一遍,想先熟悉了一下相关功能,之后自己学习,再进行编写。

系统测试

结果分析

与预期结果一致。

总结和讨论

尚需努力学习,探究事物本质。完整代码

#include

#include

using namespace std;

int main ()

{

string S0; //建立长度为0的字符串

const char* S1 = "123456";

string S2 (S1); //用已存在的字符数组S1初始化新串

string S3 (S1, 4); //字符数组S1前4个字符初始化新串

string S4 ("abcdef"); //用字符串初始化新串

string S5 (S4); //用已存在的串S4初始化新串

string S6 (S4, 1, 3); //从S4的位置编号1开始,取3个字符初始化新串string S7 (5, 'Y'); //将Z重复5次作为新串的值

cout<< "S0: " << S0 <

cout<< "S1: " << S1 <

cout<< "S2: " << S2 <

cout<< "S3: " << S3 <

cout<< "S4: " << S4 <

cout<< "S5: " << S5 <

cout<< "S6: " << S6 <

cout<< "S7: " << S7 <

string test("I'm lost in nervous.");

cout<< "test string: " << test <

cout<< "length: " <

cout<< "size: " <

intpos = 0;

string newstr ("Cheer Up!");

cout<< "new string: " <

cout<< "test.append(newstr)--------" <

cout<< "test.append(newstr, 5)-----" <

test.assign(newstr, 6, 3);

cout<< "test.assign(newstr, 6, 3)----" << test <

cout<< "S4 compares with S5: " << https://www.wendangku.net/doc/ef18865465.html,pare(S5) <

cout<< "S4 compares with S6: " << https://www.wendangku.net/doc/ef18865465.html,pare(S6) <

cout<< "insert: " << S4.insert(3, S1, 0, 4) <

cout<< "substr: " << S4.substr(2, 6) <

cout<< "find ef in S4: " <

if ((pos=S4.find("ef", pos))!= string::npos)

{

cout<< " p osition: " << S4.find("ef", pos);

}

else

{

cout<<" Not Found!";

}

cout<

cout<< "find kl in S4: " <

if ((pos=S4.find("kl", pos)) != string::npos)

{

cout<< " p osition: " << S4.find("kl", pos); }

else

{

cout<<" Not Found!";

}

cout<

cout<< "replace S7 by S2" <

cout<< "S7: " << S7.replace(1, 3, S2) <

S7.swap(S2);

cout<< "swap S7 with S2" <

cout<< "S2: " << S2 <

cout<< "S7: " << S7 <

//操作符重载

cout<< "S1+S3: " << S1 + S3 <

S2 = S1;

cout<< "S2=S1 , S2: " << S2 <

S2 += S1;

cout<< "S2+=S1 , S2: " << S2 <

cout<< "S2 == S1 ?";

if (S2 == S1)

{

cout<< " y es" <

}

else

{

cout<< " n o" <

}

cout<< "S7 > S1 ?";

if (S7 > S1)

{

cout<< " y es" <

}

else

{

cout<< " n o" <

}

cout<< "S5: " << S5 <

cout<< "divided S5: ";

inti = 0;

while (i< S5.length())

{

cout<< S5[i] << ' ';

i++;

}

cout<

cout<< "input a string" <

cin>> S0;

cout<< S0 <

// cout<< "S0: " << S0 <

// cout<< "S1: " << S1 <

// cout<< "S2: " << S2 <

// cout<< "S3: " << S3 <

// cout<< "S4: " << S4 <

// cout<< "S5: " << S5 <

// cout<< "S6: " << S6 <

// cout<< "S7: " << S7 <

// cout<< "test: " << test <

// cout<< "newstr: " <

return 0;

}

java String类的用法

1 String 类的用法 public class SetStringValue { /** * @param args */ public static void main(String[] args) { String str1=new String("Java是当今最流行的编程语言之一");//截取数组 String str2="java是优秀的技术"; char[] szStr={'H','e','l','l','o',',','j','a','v','a'}; String str3=String.copyValueOf(szStr);//复制数组,所有数组。 String str4=String.copyValueOf(szStr,6,4);//所取数组,开始位置,所取个数 System.out.println(str1); System.out.println(str2); System.out.println(str3); System.out.println(str4); // TODO Auto-generated method stub } } 2 public class StringPool { /** * @param args */ public static void main(String[] args) { String str1="Good!"; String str2="Good!"; String str3=new String("Good!"); if(str1==str2)//判断地址是否相同 { System.out.println("str1=str2");//地址相同则输出相等

C++string类型总结

对C++中string类型的总结 string类对象的构造 简化构造函数原型如下(注意,为了简便,把模板中最后一个默认参数省略了): 1: explicit basic_string(); 2: string(const char *s); 3: string(const char *s, size_type n); 4: string(const string& str); 5: string(const string& str, size_type pos, size_type n); 6: string(size_type n, E c); 7: string(const_iterator first, const_iterator last); string对象的操作 字符串比较 支持六种关系运算符(==、!=、>、>=、<、<=),其采用字典排序策略(与C中字符串比较策略完全一样)。这六个关系运算符是非成员的重载运算符。而这些 运算符都支持三种操作数组合:string op string、string op const char*、cons t char* op string(其中op是前面六种关系运算符中任意一种)。解释:提供运算 符的三种重载版本主要是从效率角度考虑的,其避免了临时string对象的产生。 另外,string类还提供了各种重载版本的成员函数compare来比较,简化函数原型为: 1: int compare(const string& str) const; 2: int compare(size_type p0, size_type n0, const string& str); 3: int compare(size_type p0, size_type n0, const string& str, si ze_type pos, size_type n); 4: int compare(const char* s) const; 5: int compare(size_type p0, size_type n0, const char* s) const; 6: int compare(size_type p0, size_type n0, const char* s, size_t ype n) const; 返回值:如果调用该函数的对象的比较序列小于操作数比较序列,则返回负数; 若相等,则返回0;否则,返回正数。

我的java基础题和答案详解

If语句相关训练 1. (标识符命名)下面几个变量中,那些是对的那些是错的错的请说明理由(CDF) A. ILoveJava B. $20 C. learn@java D. E. Hello_World F. 2tigers 答:标识符中不能有@,不能含有点号,开头只能是字母和$ 2. (Java 程序的编译与运行)假设有如下程序: package public class HelloWorld{ public static void main(String args[]){ "Hello World"); } } 问: 1)假设这个代码存在文件中,那这个程序能够编译通过为什么 如果编译不通过,应该如何改进 答:不能,含有public的类文件名必须要和类名一致;应将改写成 2)假设这个.java 文件放在C:\javafile\目录下,CLASSPATH=.,则生成的.class 文件应该放在什么目录下如何运行 答:.class应该存放在C:\javafile\目录下 3. (if 语句)读入一个整数,判断其是奇数还是偶数 public class Test { int n; If(n%2==0){ 是偶数”); }else{ 是奇数”); } } 4. (操作符)有如下代码: int a = 5; int b = (a++) + (--a) +(++a); 问执行完之后,b 的结果是多少 答:16 解析a先把5赋值给b让后再自增1相当于(b=5+(--6)+(++5))

5. (基本类型的运算)一家商场在举行打折促销,所有商品都进行8 折优惠。一 位程序员把这个逻辑写成: short price = ...; (操作符)有如下代码: a = (a>b)a:b; 请问这段代码完成了什么功能。 答:这段代码的作用是取最大值,当a>b成立时,a=a;当a>b不成立时,a=b; 8. (if 语句)读入一个整数,表示一个人的年龄。如果小于6 岁,则输出“儿童”,6 岁到13 岁,输出“少儿”;14 岁到18 岁,输出“青少年”;18 岁到35 岁,输出“青年”;35 岁到50 岁,输出“中年”;50 岁以上输出“中老年”。 答:public class AgeTest { public static void main(String[] args) { int n=12; if(n<6){

STRING类函数用法总结3

C++中的string类 前言:string的角色 1string使用 1.1充分使用string操作符 1.2眼花缭乱的string find函数 1.3string insert,replace,erase2string和C风格字符串 3string和Charactor Traits 4string建议 5小结 6附录前言:string的角色 C++语言是个十分优秀的语言,但优秀并不表示完美。还是有许多人不愿意使用C或者C++,为什么?原因众多,其中之一就是C/C++的文本处理功能太麻烦,用起来很不方便。以前没有接触过其他语言时,每当别人这么说,我总是不屑一顾,认为他们根本就没有领会C++的精华,或者不太懂C++,现在我接触perl,php,和Shell脚本以后,开始理解了以前为什么有人说C++文本处理不方便了。 举例来说,如果文本格式是:用户名电话号码,文件名name.txt Tom23245332 Jenny22231231 Heny22183942 Tom23245332 ... 现在我们需要对用户名排序,且只输出不同的姓名。 那么在shell编程中,可以这样用: awk'{print$1}'name.txt|sort|uniq 简单吧? 如果使用C/C++就麻烦了,他需要做以下工作: 先打开文件,检测文件是否打开,如果失败,则退出。 声明一个足够大得二维字符数组或者一个字符指针数组 读入一行到字符空间 然后分析一行的结构,找到空格,存入字符数组中。 关闭文件 写一个排序函数,或者使用写一个比较函数,使用qsort排序 遍历数组,比较是否有相同的,如果有,则要删除,copy... 输出信息 你可以用C++或者C语言去实现这个流程。如果一个人的主要工作就是处理这种

JAVA实验报告四(实现String类)

JA V A实验报告实验四运用JavaFx实现时钟动画 班级:计算机科学与技术1306 学号: 00 姓名:王雨思 指导教师:鲁鸣鸣 2014 年 12 月 1 日

目录 一.概述 (6) 二.总体方案设计 (7) 三.详细设计 (8) 四.程序的调试与运行结果说明 (9) 五.课程设计总结 (10) 六.后记 (11) 七.附录 (12) 参考文献 (13)

一概述 1.课程设计的目的 了解和掌握String类的实现原理 2.课程设计的要求 基于ArrayList实现可以深度复制(Deep Copy)的栈结构。1.首先用ArrayList实现栈结构 2.接着将第1步实现的栈通过Clonable接口实现深度复制 3.课程设计的主要设计思想 基于ArrayList实现可以深度复制(Deep Copy)的栈结构。二总体方案设计 编写程序实现MyString类的下列操作: public MyString(char[] chars); public char charAt(int index); public int length(); public MyString substring(int begin, int end); public MyString toLowerCase(); public boolean equals(MyString s); public static MyString valueOf(int i); public int compare(String s); public MyString substring(int begin); public MyString toUpperCase(); public char[] toChars();

精选30道Java笔试题解答

都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进来了,免得笑话我们这些未出校门的孩纸们,但是IT公司就喜欢考这些基础的东西,所以为了能进大公司就~~~当复习期末考吧。花了不少时间整理,在整理过程中也学到了很多东西,请大家认真对待每一题~~~ 下面都是我自己的答案非官方,仅供参考,如果有疑问或错误请一定要提出来,大家一起进步啦~~~ 1. 下面哪些是Thread类的方法() A start() B run() C exit() D getPriority() 答案:ABD 解析:看Java API docs吧:https://www.wendangku.net/doc/ef18865465.html,/javase/7/docs/api/,exit()是System类的方法,如System.exit(0)。 2. 下面关于https://www.wendangku.net/doc/ef18865465.html,ng.Exception类的说法正确的是() A 继承自Throwable B Serialable CD 不记得,反正不正确 答案:A 解析:Java异常的基类为https://www.wendangku.net/doc/ef18865465.html,ng.Throwable,https://www.wendangku.net/doc/ef18865465.html,ng.Error和https://www.wendangku.net/doc/ef18865465.html,ng.Exception继承Throwable,RuntimeException和其它的Exception等继承Exception,具体的RuntimeException继承RuntimeException。扩展:错误和异常的区别(Error vs Exception) 1) https://www.wendangku.net/doc/ef18865465.html,ng.Error: Throwable的子类,用于标记严重错误。合理的应用程序不应该去try/catch这种错误。绝大多数的错误都是非正常的,就根本不该出现的。 https://www.wendangku.net/doc/ef18865465.html,ng.Exception: Throwable的子类,用于指示一种合理的程序想去catch的条件。即它仅仅是一种程序运行条件,而非严重错误,并且鼓励用户程序去catch它。 2) Error和RuntimeException及其子类都是未检查的异常(unchecked exceptions),而所有其他的Exception 类都是检查了的异常(checked exceptions). checked exceptions: 通常是从一个可以恢复的程序中抛出来的,并且最好能够从这种异常中使用程序恢复。比如FileNotFoundException, ParseException等。 unchecked exceptions: 通常是如果一切正常的话本不该发生的异常,但是的确发生了。比如ArrayIndexOutOfBoundException, ClassCastException等。从语言本身的角度讲,程序不该去catch这类异常,虽然能够从诸如RuntimeException这样的异常中catch并恢复,但是并不鼓励终端程序员这么做,因为完全没要必要。因为这类错误本身就是bug,应该被修复,出现此类错误时程序就应该立即停止执行。因此, 面对Errors和unchecked exceptions应该让程序自动终止执行,程序员不该做诸如try/catch这样的事情,而是应该查明原因,修改代码逻辑。 RuntimeException:RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等。

编写strcpy函数和类String的构造函数、析构函数、赋值函数和重载运算符函数

编写strcpy函数和类String的构造函数、析构函数、赋值函数和重载运算符函数 已知strcpy函数的原型是 char *strcpy(char *strDest, const char *strSrc); 其中strDest是目的字符串,strSrc是源字符串。 (1)不调用C++/C的字符串库函数,请编写函数strcpy char *strcpy(char *strDest, const char *strSrc); //将源字符串加const,表明其为输入参数 { assert((strDest!=NULL) && (strSrc !=NULL)); // 2分 //对源地址和目的地址加非0断言 char *address = strDest; // 2分//为了实现链式操作,将目的地址返回 while( (*strDest++ = * strSrc++) != …\0? ) // 2分 NULL ; return address ; // 2分 } (2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? 答:为了实现链式表达式。// 2分 例如int length = strlen( strcpy( strDest, “hello world”) ); 二、网上广泛流传的,也是摘自林锐的 http://www.blog.sh/user3/skyflowing/archives/2006/60452.html 题目: 已知strcpy函数的原型是: char * strcpy(char * strDest,const char * strSrc); 1.不调用库函数,实现strcpy函数。 2.解释为什么要返回char *。

string类的使用教程

这个是string类的使用教程,可以参考一下 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用= 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 好了,进入正题……… 首先,为了在我们的程序中使用string类型,我们必须包含头文件。如下:#include //注意这里不是string.h string.h是C字符串头文件 1.声明一个C++字符串 声明一个字符串变量很简单: string Str; 这样我们就声明了一个字符串变量,但既然是一个类,就有构造函数和析构函数。上面的声明没有传入参数,所以就直接使用了string的默认的构造函数,这个函数所作的就是把Str初始化为一个空字符串。String类的构造函数和析构函数如下: a) string s; //生成一个空字符串s b) string s(str) //拷贝构造函数生成str的复制品 c) string s(str,stridx) //将字符串str内“始于位置stridx”的部分当作字符串的初值 d) string s(str,stridx,strlen) //将字符串str内“始于stridx且长度顶多strlen”的部分作为字符串的初值 e) string s(cstr) //将C字符串作为s的初值 f) string s(chars,chars_len) //将C字符串前chars_len个字符作为字符串s 的初值。 g) string s(num,c) //生成一个字符串,包含num个c字符 h) string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值 i) s.~string() //销毁所有字符,释放内存 都很简单,我就不解释了。 2.字符串操作函数 这里是C++字符串的重点,我先把各种操作函数罗列出来,不喜欢把所有函数都看完的人可以在这里找自己喜欢的函数,再到后面看他的详细解释。 a) =,assign() //赋以新值 b) swap() //交换两个字符串的内容 c) +=,append(),push_back() //在尾部添加字符 d) insert() //插入字符 e) erase() //删除字符 f) clear() //删除全部字符 g) replace() //替换字符 h) + //串联字符串 i) ==,!=,<,<=,>,>=,compare() //比较字符串 j) size(),length() //返回字符数量

java对象转换String类型的三种方法

北大青鸟中关村 java对象转换String类型的三种方法在很多情况下我们都需要将一个对象转换为String类型。一般来说有三种方法可以实现:Object.toString()、(String)Object、String.valueOf(Object)。下面对这三种方法一一分析 一、采用Object.toString() toString方法是https://www.wendangku.net/doc/ef18865465.html,ng.Object对象的一个public方法。在java中任何对象都会继承Object 对象,所以一般来说任何对象都可以调用toString这个方法。这是采用该种方法时,常派生类会覆盖Object里的toString()方法。 但是在使用该方法时要注意,必须保证Object不是null值,否则将抛出NullPointerException 异常。 二、采用(String)Object 该方法是一个标准的类型转换的方法,可以将Object转换为String。但是在使用该方法是要注意的是需要转换的类型必须是能够转换为String的,否则会出现CalssCastException异常错误。 代码代码如下: Object o = new Integer(100); String string = (String)o; 这段程序代码会出现https://www.wendangku.net/doc/ef18865465.html,ng.ClassCastException: https://www.wendangku.net/doc/ef18865465.html,ng.Integer cannot be cast to https://www.wendangku.net/doc/ef18865465.html,ng.String。因为将Integer类型强制转换为String类型,无法通过。 三、String.valueOf(Object) 上面我们使用Object.toString()方法时需要担心null问题。但是使用该方法无需担心null值问题。因为在使用String.valueOf(Object)时,它会判断Object是否为空值,如果是,则返回null。下面为String.valueOf(Object)的源码: 代码代码如下: public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); } 从上面我们可以看出两点:一是不需要担心null问题。二是它是以toString()方法为基础的。但是一定要注意:当object为null时,String.valueOf(object)的值是字符串对象:"null",而不是null!!!

【VIP专享】Java中String类的方法详解

Java中String类的方法详解 JJava中String 类的方法及说明 String : 字符串类型 一、构造函数 String(byte[ ]bytes ):通过byte数组构造字符串对象。 String(char[ ]value ):通过char数组构造字符串对象。 String(Sting original ):构造一个original的副本。即:拷贝一个original。 String(StringBuffer buffer ):通过StringBuffer数组构造字符串对象。例如: byte[] b = {'a','b','c','d','e','f','g','h','i','j'}; char[] c = {'0','1','2','3','4','5','6','7','8','9'}; String sb = new String(b); //abcdefghij String sb_sub = new String(b,3/*offset*/,2/*length*/); //de String sc = new String(c); //0123456789 String sc_sub = new String(c,3,2); //34 String sb_copy = new String(sb); //abcdefghij System.out.println("sb:"+sb); System.out.println("sb_sub:"+sb_sub); System.out.println("sc:"+sc); System.out.println("sc_sub:"+sc_sub); System.out.println("sb_copy:"+sb_copy); 输出结果:sb:abcdefghij sb_sub:de sc:0123456789 sc_sub:34 sb_copy:abcdefghij 二、方法: 说明:①、所有方法均为public。 ②、书写格式: [修饰符] <返回类型><方法名([参数列表])> 0.public static int parseInt(String s) public static byte parseByte(String s) public static boolean parseBoolean(String s) public static short parseShort(String s) public static long parseLong(String s) public static double parseDouble(String s) 例如:可以将“数字”格式的字符串,转化为相应的基本数据类型 int i=Integer.pareInt(“123”)

string类中函数介绍

标准c++中string类函数介绍 注意不是CString 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用= 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 好了,进入正题……… 首先,为了在我们的程序中使用string类型,我们必须包含头文件。 如下: #include //注意这里不是string.h string.h是C字符串头文件 #include using namespace std; 1.声明一个C++字符串 声明一个字符串变量很简单: string Str; 这样我们就声明了一个字符串变量,但既然是一个类,就有构造函数和析构函数。上面的声明没有传入参数,所以就直接使用了string的默认的构造函数,这个函数所作的就是把Str 初始化为一个空字符串。String类的构造函数和析构函数如下: a) string s; //生成一个空字符串s b) string s(str) //拷贝构造函数生成str的复制品 c) string s(str,stridx) //将字符串str内“始于位置stridx”的部分当作字符串的初值 d) string s(str,stridx,strlen) //将字符串str内“始于stridx且长度顶多strlen”的部分作为字符串的初值 e) string s(cstr) //将C字符串作为s的初值 f) string s(chars,chars_len) //将C字符串前chars_len个字符作为字符串s的初值。 g) string s(num,c) //生成一个字符串,包含num个c字符 h) string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值 i) s.~string() //销毁所有字符,释放内存 都很简单,我就不解释了。 2.字符串操作函数 这里是C++字符串的重点,我先把各种操作函数罗列出来,不喜欢把所有函数都看完的人可以在这里找自己喜欢的函数,再到后面看他的详细解释。 a) =,assign() //赋以新值 b) swap() //交换两个字符串的内容 c) +=,append(),push_back() //在尾部添加字符

C++ string类专题(修订版)

本文作者:黄邦勇帅(编著)(原名:黄勇) 本文是学习C++的附加内容,主要介绍了C++中的string类的各种成员函数,及成员函数的功能与作用,是作为学习C++的参考使用的。 本文内容完全属于个人见解与参考文现的作者无关,其中难免有误解之处,望指出更正 本文使用的是x86机器(主流计算机都是x86机器),windows xp操作系统,VC++2010编译器进行讲解的。 本文内容完全属于个人见解与参考文现的作者无关,限于水平有限,其中难免有误解之处,望指出更正。 声明:禁止抄袭,复印,转载本文,本文作者拥有完全版权。 主要参考文献: 1、C++.Primer.Plus.第五版.中文版[美]Stephen Prata著孙建春韦强译人民邮电出版社 2005年5月 2、C++.Primer第四版.中文版 Stanley B.Lippman、Barbara E.Moo、Josee Lajoie著李师贤、蒋爱军等译人民邮电出版社 2006年3月 3、C++.Primer第三版.中文版 Stanley B.Lippman、Josee Lajoie著潘爱民、张丽等译中国电力版社 2002年5月 第19部分 string类专题(共9页) (2016-7-15 修订版) 1、string类用于处理字符串,用于代替使用不方便的C风格字符串,使用string类表示的字符串我们可以像处理普通 变量那样处理字符串,因此可以对string类表示的字符串进行直接的相加,比较,赋值等操作,比如string s1=”abc”,s2=”def”;则s1=s1+s2;结果s1=”abcdef”;s1=s2;则结果s1=”def” 等,C风格字符串只能使用内置的库函数进行这些操作,使用很不方便,比如char c1[]=”abc”; char c2[]=”def”;则c1=c2;错误,不能改变数组的地址,c1>c2比较的是两个指针的地址而不是字符的大小;c1+c2;错误,这是把两个指针的地址相加而不是把两个字符数组相加。 2、string对象创建的字符串的最大特点是:可以自动调整对象大小以适应所需的字符串,string对象能存储的最大字符 数由string类的静态常量string::npos设定,通常是最大的unsigned int值。 一、string类的原型 1、要使用string类需要包含string头文件。 2、string是一个模板类,因此它具有类和模板的特性,也就是说string类有构造函数、重载的操作符、成员函数等, 因为string是模板类,因此应建一个模板类具体实例化版本的对象才能使用,然后通过对象调用成员函数使用类。 3、记住string s;创建的s是一个类的对象,而不是字符串字面值,他们是两种不同的类型。 4、string类是模板类basic_string类的char特化体版本使用typedef命名后的别名,wstring类是模板类basic_string的 wchar特体化版本使用typedef命名后的别名。 5、basic_string类的原型为(重点): template, class Allocator=allocator > class basic_string; 1)、charT是个类型模板形参,若实例化时传递char类型,则charT=char,传递wchar则charT=wchar 2)、traits是类型模板形参,描述了字符串的特征,比如字符串是否以’\0’作为结束尾等。traits要求传递一个 char_traits的模板类型作为实参。 3)、Allocator也是个类模板形参,他的主要作用是用于处理字符串的内存分配问题,默认使用new和delete分配内 存。Allocator要求传递一个allocator类型的模板类型作为实参。 4)、basic_string有两个特化体版本(重点),如下所示,当然我们也可以实例化其他类型版本的base_string类模板, ①、typedef base_string string; //即string类是使用typedef重命名后的basic_string类模板的char特化体版本。 ②、typedef base_string wstring; //主要用于处理宽字符串。 6、size_type类型(重要):size_type是basic_string类中定义的类型,一般被定义为unsigned类型。需要使用限定名的 方法来使用size_type类型,比如string::size_type a;或basic_string::size_type a; 7、npos静态常量(重要):表示string对象能够存储的最大字符数,其形式为:static const size_type npos=-1; 可见npos 是basic_string类中定义的静态常量,其类型为size_type其值为-1,对于无符号的size_type变量,赋值为-1,相当于是把最大的无符号数赋值给了他。 二、string类的构造函数 1、basic_string的构造函数与char特化版本的string构造函数的差别,只在于basic_string构造函数多了一个用于分配

【实验5】c++MyString类实现

ccnu_hupo_cpp_class_tst6exercise2_by:lele_2013_10_30 new不忘delete Design the string class in the C++ library by providing your own implementation for the following functions (name your class MyString): MyString();//构造 MyString(const char* cString);//地址不能变 char at(int index) const;//输入数组下标,返回字符 int length() const;//长度 void clear();//清空len=0 bool empty() const;//是否清空?len不变 int compare(const MyString& s) const;// int compare(int index, int n, const MyString& s) const; void copy(char s[], int index, int n); char* data() const; int find(char ch) const; int find(char ch, int index) const; int find(const MyString& s, int index) const; */ #include #include using namespace std; class MyString { public: MyString(); MyString(const char* cString); char at(int index) const;// int length() const; void clear(); bool empty() const; int compare(const MyString& s) const; int compare(int index, int n, const MyString& s) const; void copy(char s[], int index, int n); char* data() const; int find(char ch) const; int find(char ch, int index) const; int find(const MyString& s, int index) const; ~MyString()

C++ string 详解

C++ string 详解 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用= 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 好了,进入正题……… 首先,为了在我们的程序中使用string类型,我们必须包含头文件。如下: #include //注意这里不是string.h string.h是C字符串头文件 1.声明一个C++字符串 声明一个字符串变量很简单: string Str; 这样我们就声明了一个字符串变量,但既然是一个类,就有构造函数和析构函数。上面的声明没有传入参数,所以就直接使用了string的默认的构造函数,这个函数所作的就是把Str 初始化为一个空字符串。String类的构造函数和析构函数如下: a) string s; //生成一个空字符串s b) string s(str) //拷贝构造函数生成str的复制品 c) string s(str,stridx) //将字符串str内“始于位置stridx”的部分当作字符串的初值 d) string s(str,stridx,strlen) //将字符串str内“始于stridx且长度顶多strlen”的部分作为字符串的初值 e) string s(cstr) //将C字符串作为s的初值 f) string s(chars,chars_len) //将C字符串前chars_len个字符作为字符串s的初值。 g) string s(num,c) //生成一个字符串,包含num个c字符 h) string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值 i) s.~string() //销毁所有字符,释放内存 都很简单,我就不解释了。 2.字符串操作函数 这里是C++字符串的重点,我先把各种操作函数罗列出来,不喜欢把所有函数都看完的人可以在这里找自己喜欢的函数,再到后面看他的详细解释。

在C++中自定义string类

在C++中自定义string类 #pragma once #include class str { public: str(void); str(char*); ~str(void); protected: char* string; public: int length(void); int findchar(char s); int findstr(char* str); char** seg(char* sign, int* out=NULL); char* copy(int start, int end); int findchar(char* str, char c); int findstr(char* str, char* s); int contain(char* str); int contain(char* strin, char* str); int length(char* p); char* copy(char* str, int start, int end); char** seg(char* str, char* sign, int* out=NULL); char* tochar(void); char* tochar(str str); void tostring(char* c); char* substr(char* string, char* str); bool substr(char* str); char* suballstr(char* string, char* str); bool suballstr(char* str); char* appendstr(char* string, char* str); bool appendstr(char* str); };

Qt 的QString类的使用

Qt 的QString类的使用Qt的QString类提供了很方便的对字符串操作的接口。 1.使某个字符填满字符串,也就是说字符串里的所有字符都有等长度的ch来代替。 QString::fill ( QChar ch, int size = -1 ) 例: QString str = "Berlin"; str.fill('z'); // str == "zzzzzz" str.fill('A', 2); // str == "AA" 2,从字符串里查找相同的某个字符串str。 int QString::indexOf ( const QString & str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const 例如: QString x = "sticky question"; QString y = "sti"; x.indexOf(y); // returns 0 x.indexOf(y, 1); // returns 10 x.indexOf(y, 10); // returns 10 x.indexOf(y, 11); // returns -1 3指定位置插入字符串 QString & QString::insert ( int position, const QString & str ) 例如: QString str = "Meal"; str.insert(1, QString("ontr")); // str == "Montreal" 3,判断字符串是否为空。 bool QString::isEmpty () const 如: QString().isEmpty(); // returns true QString("").isEmpty(); // returns true QString("x").isEmpty(); // returns false QString("abc").isEmpty(); // returns false

各个类及其方法的实现

客户端:(六个类) ChatClient、Denglu、Hall、HUIQICC 、Panecc、Registry 功能: 1、ChatClient: * 该类主要关于客户端与服务器之间的通信,包括聊天信息、悔棋信息、认输信息、退出信息、注册信息、登陆信息等等* 通过该类还调用了大量的Panecc类的方法,实现通信信息在界面上的实现 * * 主要方法是Connect(),通过调用该方法建立与服务器端的连接,在该方法里,new了一个Thread对象, * 同时架设了经过初步包装基本的管道(DataInputStream和DataOutputStream)。接下来便开始接收服务器端 * 发来的消息了,通过简单的协议,实现不同种类消息的接收和解析,该协议便是一串数字(int类型), * 在发送消息方法里先写进一串数字,再写入需要发送的消息内容。同理,接收消息时先读取数字,再根据不同的数字 * 解析出不同的消息种类。 * 除了Connect()方法之外,还有很多信息的发送方法,比如

聊天信息(SendMessage(String message))、登陆信息(SendLogin(String name,String key)) * 、注册信息(SendZhuce(String name,String pass))、发送猜先信息(sendcai(int a))等等 2、Denglu: * 该类是客户端的主驱动类,在该类中声明并初始化了ChatClient类的对象cc, * 并通过该对象调用了ChatClient类的许多方法; * 该类主要是关于登陆界面,并实现了相关监听; * 该类还存在一个内部类--paneLogin ,这个内部类主要是画界面,监听功能在主类中实现 * * 通过该类,将用户信息,发送给服务器,再由服务器连接数据库,判断登陆的相关信息。 3、Hall: * 该类是关于登陆大厅,存在一个内部类--hallt,该内部类

C++ string

C++ string介绍 char*的字符串和C++标准程序库中的string类相比,后者不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 好了,进入正题………- 首先,为了在我们的程序中使用string类型,我们必须包含头文件。如下: #include //注意这里不是string.h string.h是C字符串头文件 1.声明一个C++字符串 声明一个字符串变量很简单: string Str; 这样我们就声明了一个字符串变量,但既然是一个类,就有构造函数和析构函数。上面的声明没有传入参数,所以就直接使用了string的默认的构造函数,这个函数所作的就是把Str初始化为一个空字符串。String类的构造函数和析构函数如下: a) string s; //生成一个空字符串s b) string s(str) //拷贝构造函数生成str的复制品 c) string s(str,stridx) //将字符串str内“始于位置stridx”的部分当作字符串的初值 d) string s(str,stridx,strlen) //将字符串str内“始于stridx且长度顶多strlen”的部分作为字符串的初值 e) string s(cstr) //将C字符串作为s的初值 f) string s(chars,chars_len) //将C字符串前chars_len个字符作为字符串s的初值。 g) string s(num,c) //生成一个字符串,包含num个c字符 h) string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值 i) s.~string() //销毁所有字符,释放内存 都很简单,我就不解释了。 2.字符串操作函数 这里是C++字符串的重点,我先把各种操作函数罗列出来,不喜欢把所有函数都看完的人可以在这里找自己喜欢的函数,再到后面看他的详细解释。 a) =,assign() //赋以新值

相关文档