本节主要讲了c++标准库里的string类型。在c++中有两大数据类型:一类是基本数据类型,像int、char、double等;另一类就是标准库里的抽象数据类型,像string、vector等,抽象数据类型是对数据(广义的数据)对象的更高级别的抽象,通过使用这些类型,程序员可以忽略他们的实现细节,将注意力更多的集中在如何更好地使用这些抽象数据类型。
string是一个类,使用的时候要包含标准库头文件#include<string>。其他的不细说了,下面主要讲一些细节问题。
1.string str;
str.size(); 该操作的返回值问题。学了这么久,今天才知道,他的返回值不是int型,而是string::size_type。(汗!之前直接把返回值赋给int型变量了)。他的定义是这样的:
class basic_string
{
typedef unsigned int size_type;
};
使用该类型有如下考虑:
a.由于字符串的长度是非负值,所以采用无符号数比采用有符号数表示范围增大一倍;
b.根据书上的叙述,采用size_type可以不受机器位数的限制,因为有的机器上int是16位的,有的是32的,这就限制了所能表示的虽大长度和程序的可移植性。但是如果从这条叙述来看,上面的定义似乎又是不对的,因为他还是与机器的位数相关的。有些疑惑!!!
2.第二个问题是:在使用strlen(str)时候,会出现错误,这是因为strlen()的参数是const char *,所以需要将str转化一下。正确使用方法是:strlen(str.c_str())
好了,今天就到这里了,希望能够坚持下去。