string 详细学习
1.定义和初始化string对象
| string s1 | 默认初始化,s1是一个空字符串 |
| string s2(s1) |
s2是s1的副本 |
| string s2 = s1 | 等价于s2(s1),s2是s1的副本 |
| string s3("value") | s3是字面值"value"的副本,除了字面值最后的那个空字符 |
| string s3 = "value" | 与上面等价 |
| string s4(n,'c') | 把s4初始化为由连续n个字符c组成的串 |
#include<iostream> using std::string; using namespace std; //1. 定义和初始化string对象 int main(void) { //直接初始化和拷贝初始化 string s5 = "hiya";//拷贝初始化 string s6(s5);//直接初始化 string s7(10, 'c');//直接初始化 string s8 = string(10, 'c');//直接初始化 string s9 = s8; //将s8拷贝给s9 }
2.string对象上的操作
| os<<s | 将s写到输出流os中,返回os |
| is>>s | 从is中读取字符串赋给s,字符串以空格分隔,返回is |
| getline(is,s) | 从is中读取一行赋给s,返回is |
| s.empty() | s为空返回true,否则返回false |
| s.size() | 返回s中字符的个数 |
| s[n] | 返回s中第n个字符的引用,位置n从0计起 |
| s1+s2 |
返回s1和s2连接后的结果 |
| s1 = s2 | 用s2的副本代替s1中原来的字符 |
|
s1 ==s2 s1 != s2 |
如果s1和s2中所含的字符完全一样,则他们相等,string对象的相等性判断对字母的大小写敏感 |
| <,<=,>,>= | 利用字符在字典中的顺序进行比较 |
读写string对象
int main(void) { //读写string string s; cin >> s; cout << s << endl; string s1, s2; cin >> s1 >> s2; cout << s1 << s2 << endl; return 0; }
读取未知数量的string对象
int main(void) { string word; while (cin >> word) { cout << word << endl; } }
使用getline读取一整行(注意头文件)
#include<iostream> #include<string> using namespace std; int main(void) { string temp; while (getline(cin, temp)) { cout << temp; } return 0; }
字面值和string相加
#include<iostream> #include<string> using namespace std; int main(void) { string s = "hello"; string s1 = s + ',' +"world"; cout << s1 << endl; //string s2 = "," + "world" + s;//会发生错误,不能把字面值直接相加,+号左右必须至少有一个是string cout << s2; return 0; }
3.处理string对象中的字符
基于for语句遍历每个字符
for(declaration:expression)
statement
#include<iostream> #include<string> using namespace std; int main(void) { string ch = "some string"; for (auto k : ch) cout << k << endl; return 0; }
改变string中的值
#include<iostream> #include<string> #include<cctype> using namespace std; int main(void) { string ch = "some string"; for (auto &k : ch) k = toupper(k);//k是一个引用,因此赋值语句将改变s中的值 cout << ch << endl; return 0; }
使用下标的方法访问
计算机小白记录学习过程,喜欢就点个推荐和关注吧O(∩_∩)O哈哈~

浙公网安备 33010602011771号