标签:
7.1 字符串
1.字符串有三种形式:
(1)用双引号括起来的字符串常量。 eg. "CHINA", "C++ Program"
(2)存放于字符数组中,以‘\0‘字符(ASCII码为0)结尾。
(3)string对象。
2.字符串常量占据内存的字节数等于字符串中字符数目+1,多出来的是结尾字符‘\0‘,字符串的长度不包括‘\0‘。
3.""也是合法的字符串常量,称为空串,仍然会占据一个字节的存储空间存放‘\0‘。
4.如果字符串常量中包含双引号,则双引号应写为‘\"‘。而‘\‘字符在字符串中出现时应写为‘\\‘。
eg. cout << "He said:\"I am a stu\\dent.\""; -> He said:"I am a stu\dent."
5.包含‘\0‘字符的一维char数组,就是一个字符串,存放时数组元素个数至少为字符串长度+1。用cin、scanf将字符串读入字符数组时,会自动在末尾加上‘\0‘。
6.用scanf读入时到空格为止,数组长度不足的情况下,可能导致数组越界。
7.cin.getline(char buf[], int bufsize); 读入一行(行长度不超过bufsize-1)或bufsize-1个字符到buf,自动添加‘\0‘,回车换行符不会写入buf而是从输入流中去掉。
8.gets(char buf[]); 读入一行,自动添加‘\0‘,回车换行符不会写入buf而是从输入流中去掉,可能导致数组越界。
9.字符串函数都根据‘\0‘来判断字符串结尾,形参为char []类型时,实参可以是char数组或字符串常量。
10.strlen函数的执行是需要时间的,且时间和字符串的长度成正比。可以取出s的长度存放在一个变量里面。
eg.int len = strlen(s); 或 for(int i=0; s[i]; i++);
作业
1.统计数字字符个数
Description:输入一行字符,统计出其中数字字符的个数。
Input:一行字符串,总长度不超过255。
Output:输出为1行,输出字符串里面数字字符的个数。
Sample Input:Peking University is set up at 1898.
Sample Output:4
1 #include <cstdio>
2
3 #define maxn 255
4 char str[maxn+10];
5
6 int main()
7 {
8 //freopen("D:\\temp\\test\\tmp.txt", "r", stdin);
9
10 gets(str);
11 int counter = 0;
12 for(int i=0; str[i]; i++) {
13 if(str[i]>=‘0‘ && str[i]<=‘9‘)
14 counter++;
15 }
16
17 printf("%d\n", counter);
18
19 return 0;
20 }
2.找到第一个只出现一次的字符
Description:给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
Input:一个字符串,长度小于100000。
Output:输出第一个仅出现一次的字符,若没有则输出no。
Sample Input:abcabd
Sample Output:c
标签:
原文地址:http://www.cnblogs.com/VincentValentine/p/5668196.html