学习笔记之string
2011-10-10 23:17
141 查看
本节主要讲了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())
好了,今天就到这里了,希望能够坚持下去。
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())
好了,今天就到这里了,希望能够坚持下去。
相关文章推荐
- Redis学习笔记二、String数据类型
- Swift学习笔记(十八)——字符串String.Index和Range详解
- Python学习笔记——String、Sequences
- C/C++ 学习笔记:C++ 中 string 类使用总结
- String_2学习笔记
- Python学习笔记13----StringIO和BytesIO
- OVa Online Judge 学习笔记- AOAPC I Volume 1. Elementary Problem Solving String
- C/C++学习笔记33:C++中标准库string类型
- Java学习笔记(八):Map<stirng,string>的遍历的四种方法
- java学习笔记5_HelloWorld 和 public static void main(String[] args)
- 【js学习笔记-062】用于模式匹配的String方法
- java学习笔记之String 构造方法
- 学习笔记之C#基础知识--String
- java学习笔记-String-字符串之间的比较
- Java 学习笔记 04 String 、StringBuilder 和 StringBuffer区别和联系
- iOS阶段学习第14天笔记(NSString与NSMutableString)
- Redis String类型和Hash类型学习笔记与总结
- L的java学习笔记———String
- Effective STL 学习笔记 Item 16:vector, string & C API
- Swift学习笔记 - OC中关于NSClassFromString获取不到Swift类的解决方案