string

http://www.cplusplus.com/reference/string/string/?kw=string


定义:

typedef basic_string<char>    string;

typedef basic_string<wchar_t> wstring;


成员类型:

member typedefinition
value_typechar
traits_typechar_traits<char>
allocator_typeallocator<char>
referencechar&
const_referenceconst char&
pointerchar*
const_pointerconst char*
iteratorrandom access iterator to char (convertible to const_iterator)
const_iteratorrandom access iterator to const char
reverse_iteratorreverse_iterator<iterator>
const_reverse_iteratorreverse_iterator<const_iterator>
difference_typeptrdiff_t
size_typesize_t


成员函数:

size            返回长度不包括'\0';

length        与size相同;

capacity     存储能力,大于等于length,不断变化,最大不可以超过max_size;

max_size  理论上单个string的最大存储空间,实际很可能达不到;

reserve      预留空间;

empty         判断是否为空;

const char* c_str() const;


实际上每个string实现都容纳了下面的信息:

  • 字符串的大小,也就是它包含的字符的数目。
  • 容纳字符串字符的内存容量。(字符串大小和容量之间差别的回顾,参见条款14。)
  • 这个字符串的,也就是,构成这个字符串的字符。 

一个string可能容纳

  • 它的配置器的拷贝。

依赖引用计数的string实现也包含了

  • 这个值的引用计数。 


string中的数据并没有保证被存储在独立的一块连续内存中;


push_back一个字符,如果重新分配内存,则导致此string的迭代器/指针/引用失效;


测试用例:

    string teststring("abc");

    cout << teststring.size() << endl;

    cout << teststring.length() << endl;

    cout << teststring.max_size() << endl;

    cout << teststring.capacity() << endl;

    cout << sizeof(teststring) << endl;  --- 一定要注意sizeof string,string占用的空间随版本实现的不同而不一样。

    cout << sizeof(string) << endl;

    cout << sizeof(teststring.c_str()) << endl; --- 这里返回一个char *,所以为4。

    cout << strlen(teststring.c_str()) << endl;

3

3
1073741820
3
4
4
4

3


其他函数:

istream& getline (istream& is, string& str);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值