C++ String 简单总结

来源:互联网 发布:jsp页面连接数据库 编辑:程序博客网 时间:2024/05/22 15:26
  1. 定义和初始化
#include <string>using std::string;string s1;                                              //定义了一个空字符串string s2 = s1;  <==>    string s2(s1);                 //s2为s1的副本              string s3 = "value";                                    //拷贝初始化     string s4(value);                                       //直接初始化string s5(n,char ch);                                   //字符串连续n个字符均为ch
  1. string类上的操作

string 普通读写

#include <iostream>#include <string>using namespace std;int main() {    string s1;    cin >> s1;    /*    while(cin >> s1)   //反复读取,直到文件末尾        cout << s1 << endl;    */    cout << s1 << endl;    return 0;}

getline读取

 istream &getline( char *buffer, streamsize num );    istream &getline( char *buffer, streamsize num, char delim );   

用getline()读取字符到buffer中,buffer在代码中通常体现为一个字符数组,streamsize num是一次读入多少个字符, num - 1个字符已经读入, 当碰到一个换行标志, 碰到一个EOF, 或者任意地读入,直到读到字符delim。delim字符不会被放入buffer中。delim字符可以自已设定,默认为回车符’/n’

第一个参数为要存储的指定字符数组。
第二个参数为抽取、读取指定数目的字符。
第三个参数指定结束字符,默认为”\n”;

#include <iostream>#include <string>using namespace std;int main() {    string s1;    while(getline(cin,s1))        cout << s1 << endl;    return 0;}

string的empty和size函数

#include <iostream>#include <string>using namespace std;int main(void) {    string s1;    cin >> s1;    cout << s1.empty() << endl;//s1是否为空    cout << s1.size() << endl;//s1可视字符的长度    return 0;}

string size_type

string抽象意义是字符串, size()的抽象意义是字符串的尺寸, string::size_type抽象意义是尺寸单位类型
string::size_type它在不同的机器上,长度是可以不同的,并非固定的长度。但只要你使用了这个类型,就使得你的程序适合这个机器。与实际机器匹配。

string的比较

== !=/比较两个字符串是否相等或不等
运算符”>”,”<”,”>=”,”<=”,”!=”均被重载用于字符串的比较;

int compare(const string &s); //比较当前字符串和s的大小int compare(int pos, int n,const string &s);//比较当前字符串从pos开始的n个字符组成的字符串与s的大小int compare(int pos, int n,const string &s,int pos2,int n2);//比较当前字符串从pos开始的n个字符组成的字符串与s中pos2开始的n2个字符组成的字符串的大小compare函数在>时返回1,<时返回-1,==时返回0  

string加法和连接
string的加法,实际就是起到一个链接的作用。
两个string可以直接相加

#include <iostream>using namespace std;int main() {    string s1 = "fdfg";    string s2 = "frgfbd";    cout << s1 + s2 << endl;    return 0;}结果:fdfgfrgfbd

string和字面值相加

#include <iostream>using namespace std;int main() {    string s1 = "fdfg";    string s2 = "frgfbd";    cout << s1 + "haha" << endl;    cout << "fhijvi" + "v" << endl;    return 0;}结果:error: invalid operands of types ‘const char [7]’ and ‘const char [2]’ to binary ‘operator+’cout << "fhijvi" + "v" << endl;

也就是说加法两边至少要有一个string 类,两个的结果也是string类
append尾部链接

string &append(const char *s);            //把c类型字符串s连接到当前字符串结尾string &append(const char *s,int n);//把c类型字符串s的前n个字符连接到当前字符串结尾string &append(const string &s);    ///把字符串s连接到当前字符串的结尾string &append(const string &s,int pos,int n);//把字符串s中从pos开始的n个字符连接到当前字符串的结尾string &append(int n,char c);        //在当前字符串结尾添加n个字符cstring &append(const_iterator first,const_iterator last);//把迭代器first和last之间的部分连接到当前字符串的结尾

string的交换和取子串

string substr(int pos = 0,int n = npos);//返回pos开始的n个字符组成的字符串void swap(string &s2);    //交换当前字符串与s2的值

对字符操作
处理所有字符

for(declaration : expression)    statementeg:string str("unviubnig");for(auto c : str) //auto根据编译器来决定该类型     cout << ccout << endl;通过引用也可改变stringstring str("unviubnig");for(auto &c : str)      c = toupper(c); //c是引用,所以可以改变字符串

利用下标进行访问

s[0] s[1] …… s[s.size() - 1]
1 2 最后一个

和C语言很相似,同样的时要注意下标越界。

原创粉丝点击