本周ACM学习相关内容:
1,字符串相关<string>
(1)初始化
string str;
string s3(str,6,3);//将str的子串(6,3)作为s1的初值;
string s6(5,'A');//初始化五个‘A’
(2)输入
cin>> //遇到空格就停了
getline(cin,字符串,终止符);//遇到终止符停止输入
getline(cin,字符串);//遇到换行符停止输入
(3)访问
string s1;
s1[0], s1.at(0);
s1.back();//返回最后一个字符的引用
s2.front();//返回第一个字符的引用
(4)查找
size_type find( const basic_string &str, size_type index );
//从 index(可缺省) 开始查找 str字符串,返回第一次出现的位置
//没找到返回,string::npos
rfind //从后往前
s1.find_first_of(s2);//返回,第一次出现s2中字符的位置
s1.find_last_of(s2);//从后往前
s1.find_first_not_of(s2);//返回,第一次出现s2中没有的字符的位置
s1.find_last_not_of(s2);//从后往前
(5)s1.swap(s2); //交换s1,s2的值
int len=sl.length();//字符串的长度
(6)连接(可以直接+)
string s1("123"), s2("abc");
//s1.append(s2); // s1 = "123abc"
//s1.append(s2, 1, 2); // s1 = "123bc"
//s1.append(3, 'K'); // s1 = "123KKK"
(7)求字符串的子串
s2=s1.substr(2,4)//从下标2开始,4位(没有4就一直到最后)
(8)比较(可直接=,<,>,!=)
int n =s1.compare(s2);//0相等,<0小于
int n =s1.compare(1,2,s2,3,4);s1子串(1,2)和s2子串(3,4)比较
(9)替换子串
s1.replace(1, 3, "123456", 2, 4); //用 "123456" 的子串(2,4) 替换 s1 的子串(1,3)
s2.replace(2, 3, 5, '0'); //用 5 个 '0' 替换子串(2,3)
s2.replace(n, 5, "XXX"); //将子串(n,5)替换为"XXX"
(10)删除子串
s1.erase(1,3);//删除子串(1,3),3没有就一直到最后
(11)插入
s1.insert(1, s2);//在下标处,插入s2
(12)
void push_back(char c) //当前字符串末尾添加字符c
void resize(int len,char c); //把字符串当前大小置为len,多去少补,多出的字符c填充不足的部分
2,头文件<climits>
CHAR_MIN char的最小值
SCHAR_MAX signed char 最大值
SCHAR_MIN signed char 最小值
UCHAR_MAX unsigned char 最大值
SHRT_MAX short 最大值
SHRT_MIN short 最小值
USHRT_MAX unsigned short 最大值
INT_MAX int 最大值
INT_MIN int 最小值
UINT_MAX unsigned int 最大值
UINT_MIN unsigned int 最小值
LONG_MAX long最大值
LONG_MIN long最小值
ULONG_MAX unsigned long 最大值
FLT_MANT_DIG float 类型的尾数
FLT_DIG float 类型的最少有效数字位数
FLT_MIN_10_EXP float类型的负指数的最小值(以10为底)
FLT_MAX_10_EXP float类型的正指数的最大值(以10为底)
FLT_MIN float类型正数最小值
FLT_MAX float类型正数最大值