1 标准库类型string表示可变长的字符序列,使用string类型必须先包含string头文件。
2 如何初始化类的对象是由类本身决定的。
string s1; // 默认初始化,s1是一个空字符串
string s2 = s1; // s2是s1的副本
string s3 = "hello"; // s3是该字符串字面值的副本, 最后的空字符'\0'不拷贝
string s4(10, 'c'); // s4的内容是 cccccccccc
3 如果提供了一个字符串字面值,则该字面值中除了最后那个空字符外其它所有的字符都被拷贝到新创建的string对象中去。
4 string s5 = "hello"; // 拷贝初始化
string s6("hello"); // 直接初始化
5 一个类除了要规定初始化其对象的方式外,还要定义对象上所能执行的操作。 (p77 string能做的操作)
6 在执行读取操作时,string对象会自动忽略开头的空白(即空格符,换行符,制表符等)并从第一个真正的字符开始读起,直到遇见下一处空白为止。
7 有时我们希望能在最终得到的字符串中保留输入时的空白符,这时应该用getline函数代替原来的>>运算符
8 getline函数读取输入流中的内容,直到遇到换行符为止(注意换行符也被读进去了),然后把所读的内容存入到那个string对象中去(注意不存换行符)
9 s.size() 返回的是一个string::size_type类型的数,这个类型与机器无关,是个无符号类型的值。注意最好不要与int在一个表达式中。
10 切记,字符串字面值与string是不同的类型。
11 cctype头文件中定义了很多处理string对象中单个字符的函数。(p92)
12 建议:使用c++版本的c标准库头文件。c版本的ctype.h对应c++版本的cctype。
13 c++版本的c标准库头文件中定义的名字在命名空间std中,而.h的c版本的则不然。
14 范围for语句:
string str("some string");
for (auto c : str)
cout << c << endl;
15 上面的c只是str对象中每一个字符的副本,如果把c定义为 auto &c的话就可以通过c去改变str中的字符了
16 string对象还可以和数组一样执行下表操作,str[index] 0<= index <str.size()
2 如何初始化类的对象是由类本身决定的。
string s1; // 默认初始化,s1是一个空字符串
string s2 = s1; // s2是s1的副本
string s3 = "hello"; // s3是该字符串字面值的副本, 最后的空字符'\0'不拷贝
string s4(10, 'c'); // s4的内容是 cccccccccc
3 如果提供了一个字符串字面值,则该字面值中除了最后那个空字符外其它所有的字符都被拷贝到新创建的string对象中去。
4 string s5 = "hello"; // 拷贝初始化
string s6("hello"); // 直接初始化
5 一个类除了要规定初始化其对象的方式外,还要定义对象上所能执行的操作。 (p77 string能做的操作)
6 在执行读取操作时,string对象会自动忽略开头的空白(即空格符,换行符,制表符等)并从第一个真正的字符开始读起,直到遇见下一处空白为止。
7 有时我们希望能在最终得到的字符串中保留输入时的空白符,这时应该用getline函数代替原来的>>运算符
8 getline函数读取输入流中的内容,直到遇到换行符为止(注意换行符也被读进去了),然后把所读的内容存入到那个string对象中去(注意不存换行符)
9 s.size() 返回的是一个string::size_type类型的数,这个类型与机器无关,是个无符号类型的值。注意最好不要与int在一个表达式中。
10 切记,字符串字面值与string是不同的类型。
11 cctype头文件中定义了很多处理string对象中单个字符的函数。(p92)
12 建议:使用c++版本的c标准库头文件。c版本的ctype.h对应c++版本的cctype。
13 c++版本的c标准库头文件中定义的名字在命名空间std中,而.h的c版本的则不然。
14 范围for语句:
string str("some string");
for (auto c : str)
cout << c << endl;
15 上面的c只是str对象中每一个字符的副本,如果把c定义为 auto &c的话就可以通过c去改变str中的字符了
16 string对象还可以和数组一样执行下表操作,str[index] 0<= index <str.size()