1. 字符串初始化
在C++中基本数据类型并不包括string,string类型其实是一种类类型,通过STL函数库中的模板类basic_string 实例化得到。
int main ()
{
// string a = new string("123"); // 报错,需要将std::basic_string<char> * 转换到 std::basic_string<char>,
// 也就是编译器无法完成转换
string *a = new string("123");
string b = "456";
string *c = new string(b); // 并不是拷贝构造的浅拷贝
*c = "789";
cout << *a << endl; // 输出 123
cout << b[0] << endl; // 输出4
cout << c[0] << endl; // 输出789
return 0;
}
通过上面的代码,可以看出几点:
- 通过模板类实例化的类类型必须用string指针接收,指针步长为初始化变量的大小(上例中步长为3)
- 字符串常量赋值得到的类型可以用string类型接收
- 使用类对象对string类进行初始化,并不是浅拷贝,对指针的操作与原对象无关
2. string & 字符串常量 & char*
2.1. string,字符串常量在C++中的表示**: ( const char *)
int main()
{
// string a = 123; // 报错,invalid conversion from 'int' to 'const char*'
// int a = "123"; // 报错&