定义和初始化string对象
初始化string对象方式
string s1 默认初始化,s1是一个空串
string s2(s1) s2是s1的副本
string s2 = s1 等价于s2(s1), s2是s1的副本
string s3("value") s3是字面值"value"的副本,除了字面值最后的那个空字符外 //直接初始化
string s3 = "value" 等价于s3("value"),s3 是字面值"value" 的副本 //拷贝初始化
string s4(n,'c') 把s4初始化为由连续n个字符c组成的串 //直接初始化
直接初始化和拷贝初始化 在上面的初始化方式中有说明
string 对象上 操作
String 的empty和size操作
empty判断string对象是否为空,返回值为布尔值
size函数返回string对象的长度
比较string对象
运算符都依照大小写敏感的字典顺序来进行比较。
两个string对象相加
两个string对象相加得到一个新的string对象。其内容是左侧运算对象和右侧运算对象串接而成,类似于: "hello" + "world" = "hello world";
字面值和string对象相加
当把string对象和字符字面值及字符串字面值混在一条语句中使用时,必须要保证每个加法运算符的两侧的运算对象至少有一个是string
string s5 = "hello" + ", " //错误,两个对象都不是string,不能把字面值直接相加。
处理string对象中的字符
使用基于范围的for语句处理每个字符
string str("some string");
for(auto c:str )
cout<<c<<endl; //将str字符串中的每个字符每行一个输出出来。
使用范围for语句改变字符串中的字符
string s("HELLO WORLD");
for (auto &c : s) //注意这里的c前有&
c = toupper(c);
这里的c是引用,赋值语句将改变s中的字符的值。
只处理一部分字符:
下标运算符:s[i] 直接改
下标执行迭代(就是在for循环中加控制条件,将要更改的字符提取出来更改就OK了)
使用下标执行随机访问
一个小练习:
1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 int main() 7 { 8 string str("extraordinary"); 9 10 for (auto &c : str) 11 { 12 c = 'x'; 13 } 14 cout << str << endl; 15 16 system("pause"); 17 return 0; 18 }