### 一. 首先作为一种标准库类型,string存在四种基本的构造函数。如下:
string s; //默认构造函数,s为空串
string s(s1);//用s1来初始化s
string s("My Blog [http://blog.csdn.net/IAccepted](http://blog.csdn.net/IAccepted)"); //将s初始化为一个字符串字面值
string s(n,'c'); //将s初始化为n个‘c’的副本
### 二.对于输入主要就是cin>>s;
(1)读取并忽略开头所有的空白字符。
(2)读取字符直至再次遇到空白字符,读取终止。
(3)输入操作符会返回所读的数据流。
当要读入一整行时可以使用getline函数,getline函数需要两个参数第一个为输入流 对象,第二个为一个string类型对象。值得注意的是getline并不忽略行开头的空白字 符。
### 三.string::size_type类型
(1)size()函数我们平时都直接默认它返回int类型的值,事实上size()函数返回的是string::size_type类型的值。
(2)string类类型和许多其他类型都定义了一些配套类型。重要的是通过这种配套类型,库类型的使用就能与机器无关。size_type就是这些配套类型中的一种。
(3)建议string的size操作结果的变量为string::size_type类型。特别重要的是,尽量 不要把size的返回值赋值给一个int变量。
### 四.string对象的相加注意
当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必
须至少有一个是string类型的对象。
例.s2=“world”; string s=“hellow”+“,”+s2;这里是错误的,因为第一个+
号的两边都为string字面值。
### 五.string转为char *
很多时候我们还是需要将string类型的转化为char*来实现自定义的操作,
C++标准库也为了和之前用C写的程序兼容,于是可以用string的c_str()函数。
string a="My Blog [http://blog.csdn.net/IAccepted](http://blog.csdn.net/IAccepted)";
char * b=a.c_str();//这样不能通过编译,原因是为了防止string对象内容被恶意修改,返回的是const类型的对象,所以要加const修饰
const char * b=a.c_str();//这样就能编译通过了。
简单总结了一点string使用时的注意事项,欢迎大家补充交流!