C++基础语法四-数组之前
看了一下手里的书,在数组之前讲了一些其他的东西,就跟着写一下吧,也有便于以后的数组的理解。
一、C-串
1、c-串
这个东西是从C语言里延伸过来的,其表现形式是:
‘H’ ‘e’ ‘l’ ‘l’ ‘o’ 0
就是说他们是以单引号括起来的字符序列,最后再加上一个0
所以说,c-串的空间长度为字符串长度加一。
就是
char b[6]=“hello”
虽然我们定义的是char,但是是指的里面hello的类型。整体C-串则是char*,指针类型。
2、字符指针与字符数组
指针是表示内存空间位置的类型,字符指针就是所指的空间位置上的值,当做字符来操作的类型。
例如·:
char* str="hello";
cout<<*str;
cout<<str;
输出结果:h/hello
str是字符指针变量,* str是字符指针变量的间接引用。即,若str指向“hello”的首地址,则* str表示该地址代表的空间上的值——‘h’
输出字符指针就是输出C-串。所以输出str时,是从h的地址符开始,输出所有字符直到遇到0。
针对C-串,C++有如下:
#include<iostream>
using namespace std;
int main()
{
char* a="hello";
char* b="123";
char c[20];
strcpy(a,c);//复制
cout<<(strcmp(c,a) ==0?"":" not")<<"equal\n";//比较
cout<<strcat(c,a);//连接
cout<<strrev(c,a);//倒置
cout<<(strstr(a,"ell") ? "" : "not")<<"found"//查找串
cout<<(strchr(a,‘c') ? "" : "not")<<"found"//查找字符
}
可能说为啥不引用< string.h>因为C++中的< iostream>已经包含了string.h。
3、string
再来说一下string串,
他的空间是自动生成的,不用像C-串一样先定长度。
操作起来也更简便
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
string a,s1="hello";
char* s2="123";
a=s1;//复制
cout<<(a==s1?"":" not")<<"equal\n";//比较
cout<<a+s2;//连接
reverse (a.begin(),a.end());//倒置
cout<<(s1.find("ell")!=-1 ? "" : "not")<<"found"//查找串
cout<<(s1,find(‘c')!=-1 ? "" : "not")<<"found"//查找字符
}
4、string与C-串的输入输出
如想输入:
Hello,How are you?
可通过循环读入单词将内容输入到变量中:
string形式:
for(string s;cin>>s);
cout<<s<<" ";
cout<<endl;
或者:
c-串形式
for(char a[20];cin>>a;)
cout<<a<<" ";
cout<<endl;
cin>>的读入方式总是将其前导的空格滤掉,将单词读入,当遇到空格时结束本次输入。
但是也可以通过getline一次性写入
string s;
getline(cin,s);
cout<<s<<endl;
//——————————————
//或者
char a[40];
cin.getline(a,40);
cout<<a<<endl;
需要注意的是这两种方法比用字符指针或字符数组遍历的方法好多了。
下篇更数组正传
嘿嘿嘿