字符串

字符串是用双引号括起来的字符序列。比如,"China”。字符串常量会在字符序列末尾添加’\0’作为结尾标记。字符串在内存中按照串中字符的排列顺序存放,并在末尾会添加’\0’作为结尾标记。

对于ASCII码来说每个字符占一个字节,而对Unicode码来说每个字符占两个字节。本教程只讲ASCII编码的字符和字符串。

C++和C一样,基本数据类型的变量中没有字符串变量,那怎样处理字符串的存储和操作呢?

C语言中用字符数组存放字符串,操作同一般数组类似。C++语言继承了这种方式。除此之外,标准C++库中还定义了string类。

字符数组的声明和使用

字符数组的声明和使用方法和其他类型的数组是一样的。声明字符数组的语法形式为:

char 字符数组名[下标表达式1][下标表达式2]...;

给大家一个有关字符数组声明和使用的简单例子:

#include <iostream>
using namespace std;
int main()
{char str[10] = {'I', ' ','l','o','v','e',' ','y','o','u' };        // 声明和初始化一维字符数组strint i;for (i=0; i<10; i++){cout << str[i];}cout << endl;return 0;
}

字符串用字符数组存放和处理

上面的例子中定义了字符数组并逐个处理数组中的元素,但存储的并不是字符串,因为结尾没有结束标记’\0’。如果我们在对字符数组进行初始化赋值时,末尾添加了’\0’就构成了字符串,但是用来存放字符串的数组的元素个数应该大于等于字符串的长度加1。

为字符数组初始化赋值时,初值可以是用逗号分隔的字符常量或ASCII码,也可以是字符串常量。对于字符串常量,结尾不用显式添加’\0’,‘\0’是隐式包含的。

根据上述几种为字符数组初始化赋值的方式,分别列举几个例子:

char str[5] = {108,111,118,101,0};
// 以逗号分隔的ASCII码为字符数组初始化赋值
char str[5] = {'l','o','v','e','\0'};
// 以逗号分隔的字符常量为字符数组初始化赋值
char str[5] = "love";
// 以字符串常量为字符数组初始化赋值

字符串用字符数组存放时,我们可以按照上面的例程中逐个字符处理和输出,还可以将整个字符串一次性输入或者输出。

例如:
一次性输入:char str[5]; cin >> str;
一次性输出:char str[5]="love"; cout << str;

将字符串一次性输入或输出时我们要注意:
1.对于字符串结尾标记’\0’,输出字符串不会输出。
2.输入多个字符串时需要用空格分隔,若要输入单个字符串则不能有空格,否则会被认为是多个字符串。
3.输出字符串时,输出参数是字符数组名,遇到’\0’时输出结束。

举例说明下以上三点:
1.char str[5]="love"; cout << str;。字符串"love"的结尾隐含’\0’,输出时只会输出"love"而不会输出’\0’。
2.char str1[5],str2[5],str3[5]; cin >> str1 >> str2 >> str3;程序执行时输入"I love you",则字符串str1、str2和str3分别被赋值"I"、“love"和"you”。如果改为char str[11]; cin >> str;程序执行时输入"I love you",则str被赋值为"I"。因为’I’后输入了空格,被认为是多个字符串,str只用空格前的子字符串赋值。
3.输出字符串时cout参数只写字符数组名就可以了,比如cout << str就可以输出str字符串,遇到’\0’时输出结束。

我们可以使用库中的字符串处理函数来处理字符串,比如,strcat用来连接两个字符串,strcpy用来拷贝字符串,strcmp用来进行字符串的比较,strlen用来计算字符串的长度。使用这些函数之前需要先包含头文件string.h。

用字符数组存放和处理字符串相关推荐

  1. 用字符数组存放一个字符串,然后输出该字符串

    用字符数组存放一个字符串,然后输出该字符串 转载于:https://www.cnblogs.com/LoveFishC/archive/2012/07/23/3845523.html

  2. 字符数组的初始化及字符串的使用

    文章目录 字符数组的定义 字符数组初始化 字符串存放 '\0'的作用 字符数组的定义 同整型数组一样: 一维数组定义:char c[10]; 二维数组定义:char ch[3][4]; 字符数组初始化 ...

  3. C语言——字符串和字符数组的区别及字符串的赋值

    几点区别: 1.一维数组中不一定存放字符串,但字符串一定要存放在一维数组里. 2.字符数组的每一个元素可存放一个字符,但它并不限定最后一个字应该是什么. 3.不可以用赋值语句将字符串常量或其他字符串赋 ...

  4. 字符数组的用法及字符串处理函数的用法

    字符型数据是以字符的ASCII码存储在存储单元中的,一般占一个字节. 1.如何定义字符数组 char s[100]; 在字符数组中一个元素存放一个字符. 下面我们来说一下字符串处理函数的用法,在使用字 ...

  5. java定义字符串数组_java字符数组用法总结,java字符串数组的定义与使用

    java字符数组,java数组的定义与使用 二维数组 String[] str = new String[5]; //创建一个长度为5的String(字符串)型的一维数组 String[] str = ...

  6. 对于一个采用字符数组存放的字符串str,设计一个递归算法StrLength(char *str)求其字符个数(长度)。递归求字符串长度

    递归求字符串长度,需要的就是将数组看成指针,一步一步走下去 int StrLength(char *str) {char *p=str;if(*p=='\0') return 0;else{retur ...

  7. 字符串常量与字符数组的区别和字符串常量易错点

    #include <stdio.h>int main() {const char *p = "abc"; //保存了地址,没有保存内容char str[] = &quo ...

  8. c语言 char 字符数组转成string字符串

    在用 esp32 写智能家居,写mqtt回调函数,处理onenet下发的数据流 byte payload.在拼接成的字符串结尾,总是莫名的出现乱码. 后来经过百度,才明白用char数组表示字符串,结尾 ...

  9. 二维数组存放多个字符串_二维数组中输出多个最值及其下标。(仅供参考)

    //求二维数组的最大值最小值及最值所在的下标(含多个最值) #include <stdio.h> #include <stdlib.h> #include <time.h ...

最新文章

  1. NIPS 2017录用论文先睹为快!论文作者清华专场分享(附PPT下载)
  2. FPGA详细芯片结构
  3. php 大牛生小牛,C#算法之关于大牛生小牛的问题
  4. 如何利用【百度地图API】,制作房产酒店地图?(下)——结合自己的数据库...
  5. mysql 多key索引_MYSQL的EXPLAIN到底多好用?
  6. Servlet基础(一) Servlet基础和关键的API介绍
  7. 程序员面试题精选100题(46)-对称子字符串的最大长度[算法]
  8. OleDb执行Oracle带自定义函数的SQL深度历险
  9. 使用PHP-GTK编写一个windows桌面应用程序
  10. 查看Linux系统架构类型的5条常用命令
  11. Office 365 Outlook Web App 移动设备体验
  12. 双11过后张勇感谢快递小哥:再大的纪录都是靠大协作来完成的
  13. 读javascript高级程序设计04-canvas
  14. DataGrid显示字段过长用...代替
  15. 杨辉三角python小代码
  16. Apache解析漏洞
  17. MyEclipse2015破解安装与使用
  18. 1153:绝对素数(一本通)
  19. Android 11.0 长按电源键直接关机屏蔽关机对话框
  20. 质数的判断(Python)找到100(1000)以内的所有质数

热门文章

  1. Java-虚拟机-垃圾收集器/垃圾收集算法/GCROOT根
  2. python使用redis做缓存_python实现类redis缓存
  3. python二维插值_python实现二维插值的三维显示
  4. python的取负运算_python 负数取模运算实例
  5. python word自动化_python操作word,自动化办公
  6. 初学FineReport(二)
  7. Centos6.5下通过shell脚本快速安装samba服务器
  8. Gym 100733G No Negations
  9. PostgreSQL在何处处理 sql查询之六十二
  10. Windows Phone 保存录音