首页  >   经验  >   string系列:2 字符串string声明和string初始化

string系列:2 字符串string声明和string初始化

查看 codexia 的博客 2015-06-23 14:59:34 1194
string  
手机阅读 | 转发赚积分
手机收藏 | 分享给好友
简介全面介绍string的声明和string的初始化,熟悉掌握可以灵活使用。

    string类使用需要包含string头文件,如#include<string>。
    1.默认声明初始化

string defstr;

     这样就声明并初始化了一个默认的空string对象。通过defstr.data()可以返回对象内部字符数组的常量指针。

    使用如:

const char * pconstchar = defstr.data();

    不能通过pconstchar 修改内部的字符数组,因为是常量指针,这样的指针不具有修改变量值的特性,因此可以保护内部的数据不会被修改。如果有特殊需求,可以将常量指针转化成变量指针来操作数据,如

char * p = (char*)pstr;

     除非你很清楚内部原理,否则不建议这么做,这样会导致问题,下面就来讨论会引起的问题。
    默认构造函数实例化的string,在内部分配了一块初始大小的内存,大小不确定,可以通过defstr.capacity()来获得,以元素数来确定大小。如果返回的是15,表明这一块内存可以存放15个字符。这是表明的这块内存的容量。如果超出,会重新分配内存以容纳更多的字符。容量不表示字符数,要获取字符数,通过defstr.size()获取。如果给defstr赋值,则会自动扩大size的大小,只要不超出大小就不会引起分配。如果字符填满了这块内存,C++就会自动扩展大小,因此你不用担心会有不够装。但是这里需要注意一个问题,正式因为会重新分配内存,可能会在后续的内存块分配(紧接着的内存块可以用)或者再另外一个地方分配一个内存块,因此返回的内部字符数组的地址就发生变化了。这个时候就不能使用之前的指针访问新分配后的内存地址。所以前面说的不建议转换为变量指针去修改就是这个原因。因为默认构造函数创建的是空字符串,它保证了第一个元素是可用的,对第一个元素操作还不会引起内存重分配,而如

1.微信扫码
2.点击按钮,粘贴命令
自动刷新 手动刷新
命令:rd eY~D[ 复制
提示:如果您发送了命令,自动刷新会展开全文。自动刷新最多60秒,超过60秒请点击手动刷新。
创作不易,汗水不止!为防止劳动果实被爬虫窃取,开启了反爬机制,需要您发送命令继续阅读。取关会再次出现此提示。一段时间后出现此提示,请再次发送即可。如有问题,请加客服微信Freeme007处理。感谢您的理解。
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
文章标题:string系列:2 字符串string声明和string初始化
文章地址:http://www.cjjjs.com/article/6232015345914649
转载到个人博客,请在文末带上右侧内容(含超链接):本文转载自:string系列:2 字符串string声明和string初始化
收藏 0 点赞 0
公众号
微信赞赏
支付宝赞赏
领支付宝大红包
QQ群

相关阅读

  1. string系列:10 string和IO操作 查找全网同类文章
  2. string系列:9 用C++ string实现任意长度正小数、整数之间的加减法 查找全网同类文章
  3. string系列:8 std::string的字符串拼接操作使用分析 查找全网同类文章
  4. string系列:7 string分割字符串split实现 查找全网同类文章
  5. string系列:6 string和wstring相互转换以及wstring显示中文问题 查找全网同类文章
  6. string系列:5 string截断两端的空格实现 查找全网同类文章
  7. string系列:4 string和string数组内部的实现原理深入剖析 查找全网同类文章
  8. string系列:3 字符串string的修改和string的读取 查找全网同类文章
  9. string系列:2 字符串string声明和string初始化 查找全网同类文章
  10. string系列:1 string概述 查找全网同类文章
分享到:
分享文章[string系列:2  字符串string声明和string初始化]到QQ空间

相关阅读

猜您感兴趣