1 #include <iostream>
2 using namespace std;
3
4
5 int main()
6 {
7 //initilization
8 string str("abc.ddd");
9 const string cstr("fff.ccc");
10 string substr1(str, 2); //c.ddd
11 string substr2(str, 2, 3); //c.d
12 string substr3("abcdefg", 2); //ab
13 cout << "the value of substr1 is: " << substr1 << endl;
14 cout << "the value of substr2 is: " << substr2 << endl;
15 cout << "the value of substr3 is: " << substr3 << endl;
16
17 //compare
18 if(str > cstr)
19 cout << "abc.ddd is larger than fff.ccc." << endl;
20 else
21 cout << "abc.ddd is less than fff.ccc." << endl;
22 if(str.compare(cstr) > 0)
23 cout << "abc.ddd is larger than fff.ccc." << endl;
24 else
25 cout << "abc.ddd is less than fff.ccc." << endl;
26
27 //assign
28 str = "sadfasdf";
29 str.assign("a",5); //a,\0,\0,\0,\0
30 str.assign(5,'a'); //a, a, a, a, a
31 cout << "the value of str is: " << str << endl; //aaaaa
32
33 //append
34 str.append("bcd");
35 cout << "the value of s after append is: " << str << endl; //aaaaabcd
36
37 //insert
38 //s.insert(1, 'd'); NOK!
39 str.insert(1, "ddd"); //adddaaaabcd
40 cout << "the value of s after append is: " << str << endl;
41
42 //find
43 string::size_type idx = str.find(".");
44 cout << "the index of . is: " << idx << endl; //3
45
46 //substring
47 string basestr = str.substr(0, idx); //abc
48 string extestr = str.substr(idx + 1, string::npos); //ddd
49 cout << "the substr of str.substr(0, idx) is: " << basestr << endl;
50 cout << "the substr of str.substr(idx, string::npos) is: " << extestr << endl;
51
52 //compare
53 if(extestr == "ddd")
54 cout << "ddd file is found!" << endl;
55 else
56 cout << "ddd file is not found!" << endl;
57
58 //replace
59 string tmpname(str.replace(idx + 1, string::npos, "xxx")); //abc.xxx
60 cout << "the string after replace extention is: " << tmpname << endl;
61
62 //erase
63 str = "internal";
64 str.replace(0,2,"ex"); //external
65 str.erase(5);
66 str.erase(2,2);
67 cout << "the string after erase is: " << str << endl;
68
69 //clear
70 str.clear();
71 cout << "the string after clear is: " << str << endl;
72 if(str.empty())
73 cout << "the string is empty." << endl;
74 else
75 cout << "the string is not empty." << endl;
76 if(str.begin() == str.end())
77 cout << "equal." << endl;
78 else
79 cout << "unequal" << endl;
80
81 //reverse
82 str = "abcd";
83 reverse(str.begin(), str.end());
84 cout << "the string after reverse is: " << str << endl;
85 str.assign(str.rbegin(), str.rend());
86 cout << "the string after reverse is: " << str << endl;
87
88 //data
89 const char* pa = str.data();
90
91 //size(), length()
92 cout << "the size of str is: " << str.size() << endl;
93 cout << "the size of str is: " << str.length() << endl;
94
95 //[], at()
96 char& r = str[2];
97 char* p = &str[3];
98 cout << "the 3rd char of str is: " << r << endl;
99 cout << "the 4rd char of str is: " << *p << endl;
100 str = "new value";
101 //reference is invalid after str is re-assigned
102 r = 'X';
103 cout << "The value of str is: " << str << endl;
104
105 //advanced find
106 //Input: I was a deer
107 //Output: reed a saw I
108 const string delims(" \t,.;");
109 string line;
110 cout << "Please input a sentence: " << endl;
111 getline(cin, line,'\n');
112 cout << "The input sentence is: " << line << endl;
113 //while find a word
114 string::size_type begIdx, endIdx;
115 begIdx = line.find_first_not_of(delims);
116 while(begIdx != string::npos){
117 endIdx = line.find_first_of(delims, begIdx);
118 if(endIdx == string::npos);
119 //endIdx = line.length();
120 for(int i = endIdx - 1; i >= static_cast<int>(begIdx); --i)
121 cout << line[i];
122 cout << ' ';
123 begIdx = line.find_first_not_of(delims, endIdx);
124
125 }
126 cout << endl;
127
128 }