如下是学习字符串时学习的笔记,仅供参考
大部份内容来自C语言学习网,我只是以个人理解来解释,并且后面全偷懒了app
string s1(); // si = "" string s2("Hello"); // s2 = "Hello" string s3(4, 'K'); // s3 = "KKKK" string s4("12345", 1, 3); //s4 = "234",即 "12345" 的从下标 1 开始,长度为 3 的子串
s1.size(); s1.length();
二者无任何区别
勿将其与strlen()混淆!函数
有两种作法学习
string s1("123"),s2("abc") s1.append(s2);//s1=123abc; s1.append(s2,1,2);//至关于在s1后面添加从s2中1到2的字符 s1.append(3,'K')//在s1后面添加3个K s1.append("ABCDE",2,3)//添加"ABCDE"的位置2到3的字串
string s1("123"),s2("abc") s1=s1+s2;//s1="123abc"
一样有两种作法this
这个不解释了spa
string s1("hello"), s2("hello, world"); int n = s1.compare(s2); n = s1.compare(1, 2, s2, 0, 3); //比较s1的子串 (1,2) 和s2的子串 (0,3) n = s1.compare(0, 2, s2); // 比较s1的子串 (0,2) 和 s2 n = s1.compare("Hello"); n = s1.compare(1, 2, "Hello"); //比较 s1 的子串(1,2)和"Hello” n = s1.compare(1, 2, "Hello", 1, 2); //比较 s1 在位置1到2的字串和 "Hello" 在位置1至2的子串
string s1 = "this is ok"; string s2 = s1.substr(2, 4); // s2 = "is i" s2 = s1.substr(2); // s2 = "is is ok"
s1.swap(s2);
string 类有一些查找子串和字符的成员函数,它们的返回值都是子串或字符在 string 对象字符串中的位置(即下标)。若是查不到,则返回 string::npos。string: :npos 是在 string 类中定义的一个静态常量。这些函数以下:code
下面是 string 类的查找成员函数的示例程序。对象
#include <iostream> #include <string> using namespace std; int main() { string s1("Source Code"); int n; if ((n = s1.find('u')) != string::npos) //查找 u 出现的位置 cout << "1) " << n << "," << s1.substr(n) << endl; //输出 l)2,urce Code if ((n = s1.find("Source", 3)) == string::npos) //从下标3开始查找"Source",找不到 cout << "2) " << "Not Found" << endl; //输出 2) Not Found if ((n = s1.find("Co")) != string::npos) //查找子串"Co"。能找到,返回"Co"的位置 cout << "3) " << n << ", " << s1.substr(n) << endl; //输出 3) 7, Code if ((n = s1.find_first_of("ceo")) != string::npos) //查找第一次出现或 'c'、'e'或'o'的位置 cout << "4) " << n << ", " << s1.substr(n) << endl; //输出 4) l, ource Code if ((n = s1.find_last_of('e')) != string::npos) //查找最后一个 'e' 的位置 cout << "5) " << n << ", " << s1.substr(n) << endl; //输出 5) 10, e if ((n = s1.find_first_not_of("eou", 1)) != string::npos) //从下标1开始查找第一次出现非 'e'、'o' 或 'u' 字符的位置 cout << "6) " << n << ", " << s1.substr(n) << endl; //输出 6) 3, rce Code return 0; }
string s1("Real Steel"); s1.erase(1, 3); //删除子串(1, 3),此后 s1 = "R Steel" s1.erase(5); //删除位置在5及其后面的全部字符,此后 s1 = "R Ste"