6.string类对象的一些其他操作
#include<iostream> #include<string> using namespace std; int main() { string s1("hello world"); const char* str1 = s1.c_str(); cout << str1 << endl; return 0; }
#include<iostream> #include<string> using namespace std; int main() { string s1("hello world"); /*const char* str1 = s1.c_str(); cout << str1 << endl;*/ char ch = 'a'; char* str1 = &ch; s1.copy(str1, 3, 2); // 注意此函数不会拷贝完后追加字符串,打印字符串时要小心越界。 return 0; }
#include<iostream> #include<string> using namespace std; int main() { //buffer (3) string s1("hello world"); const char* str = "world"; int index = s1.find(str, 0, 3); cout << index << endl; return 0; }
#include<iostream> #include<string> using namespace std; int main() { //c-string (2) string s1("hello world"); const char* str = "world"; int index = s1.rfind(str); cout << index << endl; return 0; }
#include<iostream> #include<string> using namespace std; int main() { string s1("hello world"); int index = s1.find_first_of("wor"); cout << index << endl; return 0; }
#include<iostream> #include<string> using namespace std; int main() { string s1("hello world"); string s2 = s1.substr(2, 3); cout << s2 << endl; return 0; }
#include<iostream> #include<string> using namespace std; int main() { //string (1) string s1("hello world"); string s2("iello"); cout << s1.compare(s2) << endl; return 0; }
7.getline函数
getline的作用是读取一整行,直到遇到换行符才停止读取,期间能读取像空格、Tab等的空白符。
getline函数和cin一样,也会返回它的流参数,也就是cin,所以可以用getline循环读取带空格的字符串。
注意: getline 是非成员函数!
#include<iostream> #include<string> using namespace std; int main() { string s1; //这里我们输入"hello world!" getline(cin, s1); cout << s1 << endl; return 0; }
四、结语
本章的内容都不是很难,但是琐碎的函数与细节特别多,想要掌握好它们还需要多加练习。多去使用它们,相信你会越用越熟悉的。