一、初识字符串
1.1 string的基础使用
C++中使用string来表示标准字符串,有别于基本数据类型(如int等),string实际上是一个C++自带的类。使用时需要引入头文件 #include <string>,而不是<string.h>
需要注意的是,C++中字符串也使用ASCII编码,因此不支持中文。
string的设计是符合面向对象的,因此内置了很多字符串处理的相关函数。使用相比char*要更加简便,例如无需担心内存是否足够、字符串长度等。
#include <iostream>
using namespace std;
int main()
{
string s = "Hello";
// 取出单个字符
char c1 = s[0];
cout << c1 << endl; // H
char c2 = s.at(0);
cout << c2 << endl; // H
// 获取字符串长度,下面两种写法等同
cout << s.size() << endl; // 5
cout << s.length() << endl; // 5
// for循环遍历
for(int i = 0;i < s.size();i++)
{
cout << s[i] << " ";
}
cout << endl;
// C++11新增for-each遍历
for(char i:s)
{
cout << i << " ";
}
cout << endl;
// 迭代器:略
return 0;
}
1.2 at函数与[]的区别
当下标越界时,使用[]取出元素会直接返回一个'\0',程序正常执行。
#include <iostream>
using namespace std;
int main()
{
string s = "Hello";
char c1 = s[10];
cout << c1 << endl;
cout << "主函数执行结束" << endl;
return 0;
}
运行结果:
把上述代码中的[]替换为at函数。
#include <iostream>
using namespace std;
int main()
{
string s = "Hello";
char c1 = s.at(10);
cout << c1 << endl;
cout << "主函数执行结束" << endl;
return 0;
}
程序运行到第10行会终止,并输出错误信息:
这两种取出元素的方法的区别是:
- []取出的效率更高
- at函数更加安全
建议使用at函数,除非可以确保取出的下标一定正确。