string类的成员函数
构造函数
default (1) string(); //构造长度为零的空字符串
copy (2) string (const string& str); //string类的拷贝构造函数
substring (3) string (const string& str, size_t pos, size_t len = npos);
//复制 str 中从字符位置 pos 开始、跨 len 字符的部分(如果 str 太短或 len 为 string::npos 则复制到 str 的末尾)。
from c-string (4) string (const char* s); //使用常量字符串初始化对象
from sequence (5) string (const char* s, size_t n); //从s指向的字符数组中复制前n个字符。
fill (6) string (size_t n, char c); //在字符串中连续复制 n 个字符 c。
赋值运算符重载函数
string (1) string& operator= (const string& str);
c-string (2) string& operator= (const char* s);
character (3) string& operator= (char c);
这里不是调用拷贝构造,而是调用构造函数进行对象赋初值操作,但是string类里没有该类型的构造函数,所以报错
修改后:
std::operator<< (string)
直接可以打印string类型
std::operator+ (string) 拼接字符串
string (1) string operator+ (const string& lhs, const string& rhs);
c-string (2) string operator+ (const string& lhs, const char* rhs);
string operator+ (const char* lhs, const string& rhs);
character (3) string operator+ (const string& lhs, char rhs);
string operator+ (char lhs, const string& rhs);
#include <iostream>
#include <string>
using namespace std;
int main()
{
string firstlevel("com");
string secondlevel("baidu");
string scheme("http://");
string hostname;
string url;
hostname = "www." + secondlevel + '.' + firstlevel;
url = scheme + hostname;
cout << url << endl;
return 0;
}
遍历string
char& operator[] (size_t pos); //返回引用,可读可写
const char& operator[] (size_t pos) const; // 返回引用,但是是const修饰,只能读
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str("Test string");
for (int i = 0; i < str.length(); ++i)
{
//读
cout << str[i] << ' ';
}
cout << endl;
for (int i = 0; i < str.length(); ++i)
{
//写
cout << ++str[i] << ' ';
}
return 0;
}
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str("Test string and hello string!");
//返回指向字符串第一个字符的迭代器。
string::iterator it = str.begin();
//返回指向字符串最后一个字符的迭代器。
while (it != str.end())
{
cout << *it << " ";
it++;
}
return 0;
}
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str("Test string and hello string!");
//string::iterator it = str.begin();
for (auto ch : str)
{
cout << ch << " ";
}
return 0;
}