string是c++标准库中声明的一个字符串类
- 使用时必须包含头文件string
- 没有以\0结尾
- 字符串变量的运算:可直接用=,+,==,>等符号进行赋值,连接,比较等运算
- 字符串数组:每一个元素中存放一个字符串而不是一个字符
- 在字符串变量中存放的是字符串的指针(字符串的首地址)
例1:输入一个字符串,把其中的字符按逆序输出
#include<string>
#include<iostream>
using namespace std;
int main() {
string arry;
cout << "Please enter a string: \n";
cin >> arry;
for (int i = arry.length() - 1; i >= 0; i--)//用str.length()函数获得字符串的长度,然后从最高位开始输出
cout << arry[i];
return 0;
}
输入为
abcdef
的输出:
例2:有n个字符串,要求对它们按由大到小顺序排列
将这n个字符串构成一个字符串数组,再进行排序
#include<string>
#include<iostream>
using namespace std;
void sort(string a[], int n) { //传入的a[]应该是a字符串组的首地址
for (int i = 0; i < n-1; i++) { //选择排序法
for (int j = 1 + i; j < n; j++)
if (a[i] < a[j]) {
string temb = a[i];
a[i] = a[j];
a[j] = temb;
}
}
for(int i=0;i<n;i++)cout << a[i]<<"\t"; //"\t"格式化输出排序后的字符串
cout << endl;
}
int main() { //用两个不同长度的字符串数组进行验证
string arry[] = { "zhao", "qian", "sun", "li",
"zhou", "wu", "zhen", "wang" };
string arry1[] = { "a", "b", "c", "d", "e",
"f","g", "h", "i", "g","k" };
sort(arry,size(arry)); //size函数传入的是字符串数组的长度
sort(arry1, size(arry1));
return 0;
}
输出:
程序虽然达到目的,但还是有很多疑问,一时半会儿也没搞懂,迫于时间暂时放下:
- arry传入的形式和形参定义string a[]的形式不一样,为什么?
- 为了减少参数的传入,想在sort函数里再用size函数计算a的长度,不可行,为什么?