关于标准库中sring、char、vector、set、map、queue、stack、bitset等,方法有些记不清楚,每次用每次查,很费时间,干脆自己整理一下,记不住的时候,查询更方便。
// 包含头文件和声明
#include<string>
using std::string;
// cstring 是 string.h 头文件的 C++ 版本,而 string.h 则是C语言提供的标准库
string初始化方式
getline(cin, str); //读取输入行的内容,
while(getline(cin, str))
{
cout << str << endl;
}
//内容就一行一行的输出
string常用操作
与容器共有的string操作
// 迭代器的使用
string s("hello word!");
string::iterator iter = s.begin();
while(iter != s.end())
{
cout << *iter++ << endl;
}
string的反转操作
reverse(str.begin(), str.end());
string类型的其他操作
string类型特有的版本
子串操作
string查找操作
string类型compare操作
string对象中字符处理,可以知道字符是否为空白、字母、数字。
int ret = tolower(c); // 返回小写字母的ASCII表的编号,且并不会改变c的大写字母。
C 风格字符串
// 尽管 C++ 支持 C 风格字符串,但不应该在 C++ 程序中使用这个类型,会引起不必要的麻烦。
char ca1[] = {'C', '+', '+'}; // 没有以null结尾,不是C风格
char ca2[] = {'C', '+', '+', '\0'}; // C风格
char ca3[] = "C++"; // C风格
const char *cp = "C++"; // C风格
char *cp1 = ca1; // cp1 指向第一个元素,非C类型,不是以NULL结束的数组
char *cp2 = ca2; // 指向第一个非空元素
// C风格字符串的使用
const char *cp = "some value";
while(*cp) {
// do something to *cp;
++cp;
}
操纵 C 风格字符串的标准库函数
#include <cstring>
char ca[] = {'C', '+', '+'}; // 没有以NULL结尾,
cout << strlen(ca) << endl; // 结果不可预料,disaster!
所以,尽可能使用标准库类型的string。
string str("hello world");
char *c = str; // error
char *c = str.c_str(); //ok,but not quite
const char *c = str.c_str(); // ok