一、字符串变量
除了用字符数组存储字符串外,C++增加了一种更加便捷的方式,即定义字符串类型(string)的变量来存放字符串。
1. 字符串变量的定义及初始化
string s1;
//
定义
s1
为字符串变量
string s2=”China”;
//
定义
s2
,并对其初始化
string s3(”USA”);
//
定义
s3
,并对其初始化
注意:
在使用string类型时,必须在文件的开头加上
#include <string>
2. 字符串变量的赋值
在定义字符串变量后,既可以使用字符串常量对其赋值,
也可使用另一字符串变量对其赋值,而且不用担心“超长
”。
string s1, s2=”China”;
s1= ”USA”;
//s1
的长度变为了
3
s1=s2;
//s1
的长度变为了
5
3. 字符串变量的输入/输出
cout
<<
s2;
//
输出
China
cin
>>
s1;
//
从键盘输入字符串给
s1
4.复制字符串用赋值号
string s1, s2;
s1
=
”China”;
//
把字符串常量复制到
s1
s2
=
s1;
//
把串
s1
复制到
s2
cout<<s2;
//
输出
China
5.连接字符串用加号
string s1=”C++ ”;
string s2=”Language”;
s1=s1
+
s2;
//
把串
s2
连接到
s1
cout<<s1;
//
输出
C++ Language
6.比较字符串直接用关系运算符
string s1=”C++ ”;
string s2=”Language”;
if(s1
==
s2)cout<<”s1=s2”;
else cout<<”s1!=s2”;
//
输出
s1!=s2
7.求字符串的长度
string s2=”Language”;
cout<<
s2.length()
;
//
输出
8
8.引用字符串的某个字符
string s2=”Language”;
s2[3]
= ’G’ ;
cout<<s2;
//
输出
Lan
G
uage
在需要存储多个字符串的场合,可以定义字符串数组。
string addr[10];
//
定义可容纳
10
个串的字符串数组
#include <iostream>
#include <string>
using namespace std;
string max(string s1,string s2,string s3)
{
if(s1<s2)
s1=s2;
if(s1<s3)
s1=s3;
return s1;
}
int main()
{
string s1,s2,s3;
cin>>s1>>s2>>s3;
string s;
s=max(s1,s2,s3);
cout<<s<<endl;
return 0;
}
二、动态管理内存的运算符
1. new 运算符
格式:
new 数据类型
new int
或者
new 数据类型(初值)
new double(10)
或者
new 数据类型[数组大小]
new char[10]
功能:在内存中分配一个存放指定类型数据的空间,并返回其首地址。
1.使用new分配存放整数的空间
new int
该表达式的值为空间的首地址。
new int
作用
:
在内存中建立一个无名的整型变量,
并返回该变量的地址。
2.使用new分配存放整数空间并初始化
int *p;
p=
new int(1234)
;
cout<<*p;
3.使用new分配字符数组空间
char *p;
p=
new char
[
10
]
;
p*1+=’a’;
4.
使用new分配整型数组空间
int *p;
p= new int[5];
*(p+2)=20;
p[1]=10;
关于new运算符注意以下几点:
在用new分配数组空间时不能为数组元素指定初值;
若由于内存不足等原因导致分配失败,则new会返回空指针NULL,用户可据此判断分配空间是否成功;
要访问动态分配的变量/数组元素,只能通过指针p来进行
new是在内存的堆区域中分配空间;
new与delete是运算符,而非函数。
2. delete 运算符
格式:
delete
变量地址
或者
delete
[]
数组首地址
功能:释放new分配的存储空间(撤销new建立的变量)
(1)
double* p=new double(3.14);
*p=8.1;
…
delete p
;
(2)撤销动态分配的数组空间
int *pt=new int[10];
…
delete
[]
pt
;
#include <iostream>
#include <string>
using namespace std;
struct student
{
string name;
int num;
char sex;
};
int main()
{
student *p;
p=new student;
(*p).name="李明";
(*p).num=1234;
(*p).sex='M';
cout<<(*p).name<<" "<<(*p).num<<" "<<(*p).sex<<endl;
delete p;
return 0;
}
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
cin>>n;
int i,j,k,t,*p;
p=new int[n];
for(k=0;k<n;k++)
cin>>p[k];
for(i=1;i<n;i++)
{
for(j=0;j<n-1;j++)
{
if(p[j]>p[j+1])
{
t=p[j];
p[j]=p[j+1];
p[j+1]=t;
}
}
}
for(i=0;i<n;i++)
cout<<p[i]<<" ";
cout<<endl;
delete p;
return 0;
}