C++字符串和string类介绍

一.C风格字符串

◆ 1、字符串是用字符型数组存储的,字符串要求其尾部以’\0’作为结束标志。如:
    char string[ ]=”C++ programming language”;
用sizeof来测string长度为25个字节,而实际串本身长度(含空格)为24个字节,多出来的一个就是串结束符’\0’(含0)。

◆ 2、指针与字符串
    char *pstr=”C++ is a object_oriented language”;
这里绝不是建立了一个字符串*pstr,并用赋值号后的字符串常量给它赋初值。而是编译器将字符串常量“C++ is a object language”的第一个字符的存储地址赋给字符指针作初值。字符串常量是放在字符串常量区中,它不属于指针pstr,反过来是pstr依附于它。

用指针输出字符串:C++不对数组的边界进行检测,但字符串有一个结束符’\0’(全0),在程序运行时是可以知道实际串长度的。设有定义int a[10],如有语句:
    cout<<a<<endl;
则打印出a数组在内存中的首地址,一个16进制的数。

◆ 3、字符串处理函数
C++标准库有很多字符串处理函数,在头文件<cstring>中。

1)字符串复制函数:
    char *strcpy(char *s,const char ct)
返回值是指向复制后字符串中首字符的指针。

【例5.10】字符串复制函数 strcpy()。(查看源码

2)串连接函数:char *strcat(char *s,const char *ct)
将串ct复制到串s的后面,形成一个长串。例如:
    char str1[30]=“张成”;
    char str2[20]=“是电子系的学生”;
    strcat(str1,str2);
结果是str1中放的是“张成是电子系的学生”。

3)字符串比较函数:int strcmp(const char *cs,const char ct)。
两字符串比较是按字典排序方法进行。两个字符串从第一个字符比较起,如果相同,则比较第二个字符,依此类推,直到不同。哪个字符串对应的字符的ASCII码值大,串就大。如果两串直到结束符都相同,则一样大。若两个字符串相等,则返回0;串cs 大,则返回正整数;串ct大,则返回负整数。
该函数也可很简洁地表达如下:
    int strcmp(const char *cs,const char *ct){
        int k;
        while((k= *cs - * ct)== 0 && *cs++ && *ct++);
    //注意*cs++和*ct++是条件判断后才++的
        return k;
    }

4)求字符串长度函数:int strlen(const char *s)
这里求出的串长度不包含串结束符在内。而sizeof运算符包括结束符,还包括没有使用的单元。

◆ 4、void指针及应用:称无类型或泛型指针。
任何类型的指针都可以赋给void类型的指针变量,例如:
    int val=5;
    int *pi=&val; //必须为指针赋一个有效地址,才能引用指针
    void *pv=pi;
但反过来,将泛类型指针赋给其他类型指针必须使用强制类型转换: pi=(int *)pv;

【例5.11】将字符指针强制转换为泛型指针输出字符串地址。 
#include<iostream>
using namespace std;
int main(){
  char *string1="欢迎学习C++程序设计课程!";
  cout<<"串值是:"<<string1<<"\n串地址是:"<<(void*)string1<<endl;
  return 0;
}

时间: 2024-08-03 22:32:31

C++字符串和string类介绍的相关文章

全面深入介绍C++字符串:string类

http://blog.csdn.net/liuliming3000/article/details/1809385 1 从C到C++ string类 2 string类的构造函数 3 string类的字符操作 4 string的特性描述 5 string类的输入输出操作 6 string的赋值 7 string的连接 8 string的比较 9 string类的查找函数 10 string类的替换函数 11 string类的插入函数 12 string类的删除函数 13 string类的迭代器

C#数据结构和算法-字符串、String 类和StringBuilder类

*本文为摘抄笔记* Preface当程序需要对String对象进行许多改变时会用到StringBuilder类.因为字符串和String对象都是不可改变的,而StringBuilder对象则是易变的.String类不可变,就意味着每次对象进行改变时都需要创建一个新的对象副本.如果在创建长的字符串,或者是对相同对象进行许多改变,那么就应该用StringBuilder类来代替.StringBuilder对象是可变的,性能会更好. 字符串是字符的序列,可以包含字母.数字和其他符号.C#语言中,用双引号

字符串排序--string类的使用

最近帮他们做了一个简单的c++的题目,以前做过,当时是借鉴的别人的代码,现在也忘得差不多了,不过思路还有,现在正好可以再温习一下. 题目要求如下: 先输入你要输入的字符串的个数.然后换行输入该组字符串.每个字符串以回车结束,每个字符串不多于一百个字符. 如果在输入过程中输入的一个字符串为“stop”,也结束输入. 然后将这输入的该组字符串按每个字符串的长度,由小到大排序,按排序结果输出字符串.如果存在多个字符串长度相同,则按照原始输入顺序输出. 输入格式: 字符串的个数,以及该组字符串.每个字符

C 风格字符串、string 类要点总结

1. C风格字符串 1.1 其它 头文件<cstring> 特殊性质:C风格字符串以空字符\0结尾 1.2 读取一行的区别 1.2.1 cin.getline(array1,n,char) 参数1:存入的数组名字:参数2:要读取的字符数:参数3:可选参数,用所输入的char字符替代\n作为读取结束标记,并把后续可能遇到的\n作为常规字符读取. 功能:读到换行符后边结束,并把'\n'替换为'\0',把读取到的字符串储存到name中 遇到文件结尾设置eofbit,遇到流被破坏(如设备故障)时设置b

【转】Java 字符串常用操作(String类)

原文网址:http://www.cnblogs.com/freeabyss/archive/2013/05/15/3187057.html 字符串查找 String提供了两种查找字符串的方法,即indexOf与lastIndexOf方法. 1.indexOf(String s) 该方法用于返回参数字符串s在指定字符串中首次出现的索引位置,当调用字符串的indexOf()方法时,会从当前字符串的开始位置搜索s的位置:如果没有检索到字符串s,该方法返回-1 1 String str ="We are

标准C++中的string类的用法总结【转】

转自(略改动):http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 更全面新颖的说明见:http://www.cplusplus.com/reference/string/string/  说明: 1.size_t 是个unsigned integral type.  2.文中 c字符数组 是指末尾不带'\0'的,注意与 c字符串 的区别 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC

C++ string类及其函数的讲解

文章来源于:http://www.cnblogs.com/hailexuexi/archive/2012/02/01/2334183.html C++中string是标准库中一种容器,相当于保存元素类型为char的vector容器(自己理解),这个类提供了相当丰富的函数来完成对字符串操作,以及与C风格字符串之间转换,下面是对string一些总结<引用> 一,C语言的字符串 在C语言里,对字符串的处理一项都是一件比较痛苦的事情,因为通常在实现字符串的操作的时候都会用到最不容易驾驭的类型——指针.

关于c++ string类

(转自百度百科) 首先,为了在我们的程序中使用string类型,我们必须包含头文件 <string>.如下: #include <string> //注意这里不是string.h string.h是C字符串头文件 1.声明一个C++字符串 声明一个字符串变量很简单: string Str; 这样我们就声明了一个字符串变量,但既然是一个类,就有构造函数和析构函数.上面的声明没有传入参数,所以就直接使用了string的默认的构造函数,这个函数所作的就是把Str初始化为一个空字符串.St

std::string类详解

之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要.我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?).我们尽可以把它看成是C++的基本数据类型. 标准模板库(STL)提供了一个std::string类,其是std::basic_string的一个特化,它是一个容器类,可把字符串当作普通类型来使用,并支持比