前文:C++之char和string字符串类探究

  string是C++中处理字符串的类,是对C语言中字符串的数据和行为的包装。使字符串的处理,更简单易用。

一. string的初始化方式

例1:

附例1代码:

//小问学编程
#include<iostream>
#include<string>
using namespace std;int main()
{string s1="China";cout<<s1<<endl;string s2;s2="America";cout<<s2<<endl;string s3("japan");cout<<s3<<endl;string s4;s4=s3;cout<<s4<<endl;string s5();cout<<s5<<endl;string s6(s1);cout<<s6<<endl;string s7=s1;cout<<s7<<endl;string *ps=new string("china");cout<<*ps<<endl;return 0;
}

二. 解决空格输入结束的问题

例2:

三. strlen、strcat、strcmp、strcpy

例3:strlen

size( )和length( )返回string的现有字符数,两个函数等效

例4:成员函数empty( )用来检验字符数是否为0,亦即字符串是否为空。你应该优先使用该函数,因为它比length( )或size( )更快。

例5:strcat

例6:strcmp

例7:strcpy

四. String的各项操作

五. String操作的实参体制


  注意,只有单实参的const char∗\ast∗版本才将字符’\0’视为string的结尾特殊符号,其他所有情况下’\0’都不被视为特殊字符:

因此,一般而言,string可以内含任何字符,甚至可以包含二进制文件(binary file)的内容。

六. String的构造函数和析构函数

七. 数字与字符换互转函数


对于所有“将string转换为数值”的函数,以下都适用:

  (1)它们会跳过前导的任何空白字符(whitespace)。
  (2)它们允许返回“被处理之最末字符”后的第一个字符的索引。
  (3)如果转换无法发生,它们会抛出std::invalid_argument,如果被转换值超出返回类型的可表达范围,它们会抛出std::out_of_range。
  (4)对于整数,你可以(也可以不)传递基数(base)。
  (5)对于所有将数值转换为string或wstring的函数,val可以是以下任何类型:int、unsigned int、long、unsigned long、long long、unsigned long long、float、double或long double。

例8:to_string

例9:stoi

例10:本例来自《C++标准库》第二版——string/stringnumconv1.cpp

运行结果:本例Code::Blocks编译不过,故采用ubuntu14.04中g++4.9.2编译


原书给出的运行结果:

附例10代码:

//小问学编程
#include<iostream>
#include<string>
#include<limits>
#include<exception>
using namespace std;int main()
{try{//convert to numeric typecout<<stoi("  77")<<endl;cout<<stod("  77.7")<<endl;cout<<stoi("-0x77")<<endl;//use index of charcaters not processedsize_t idx;cout<<stoi(" 42 is the truth",&idx)<<endl;cout<<" idx of first unprocessed char: "<<idx<<endl;//use base 16 and 8cout<<stoi(" 42",nullptr,16)<<endl;cout<<stol("789",&idx,8)<<endl;cout<<" idx of first unprocessed char: "<<idx<<endl;//convert numeric value to stringlong long 11=numeric_limits<long long>::max();string s=to_string(11);//converts maximum long long to stringcout<<s<<endl;//try to convert backcout<<stoi(s)<<endl;//throws out_of_range}catch(const exception& e){cout<<e.what()<<endl;}
}

八. 在C语言中要储存如下这样的数据,要用到二维空间,要进行两个层次的空间申请与释放,但在C++中就不需要了,并且一样是高效的。


例11:

附例11代码:

//小问学编程
#include<iostream>
#include<string>
using namespace std;int main()
{string strArray[10] = {"0","1","22","333","4444","55555","666666","7777777","88888888","999999999",};for(int i=0;i<10;i++){cout<<strArray[i]<<endl;}return 0;
}

九. String的Iterator相关操作

十. 一些说明

——《C++ 标准库》中文版 第13章 字符串

注:本博文摘取了《C++ 标准库》第二版第13章字符串中的一些表格,以保证本博文内容的正确性和准确性!

C++之string字符串类再探究相关推荐

  1. 如何实现一个具备基本功能函数的C++的自定义String字符串类

    在这篇文章,我们创造一个自定义的C++字符串类,它具备基本的string操作功能. 为什么要创建自己的字符串类呢?其中的一个原因是,当你想要让自己的字符串类型区别于一般的string时,你就需要自定义 ...

  2. String字符串类的获取功能

    StringDemo.java /** String类的获取功能:* int length():获取字符串的长度,其实也就是字符个数* char charAt(int index):获取指定索引处的字 ...

  3. 54从零开始学Java54之String字符串很常用

    前言 学习了前面的内容之后,我们知道了一些java中的常用类,比如Object和包装类等,但还有一个类用的更多,这就是String字符串类! 所以接下来我们会利用一些篇章,来给大家重点讲解一下Stri ...

  4. C++ - std::string字符串格式化方法总结

    文章目录 1 C++ std::string字符串格式化 1.1 C语言中的字符串格式化 1.2 C++使用std::stringstream进行字符串格式化 1.3 开源的C++单个头文件的字符串格 ...

  5. Java:字符串类String的功能介绍

    在java中,字符串是一个比较常用的类,因为代码中基本上处理的很多数据都是字符串类型的,因此,掌握字符串类的具体用法显得很重要了. 它的主要功能有如下几种:获取.判断.转换.替换.切割.字串的获取.大 ...

  6. 字符串类String

    文章目录 1 字符串类的初步设计 1.1 历史遗留问题 1.2 字符串类的初步设计 1.3 代码实现 2 字符串类功能的进一步实现 2.1 重载数组访问操作符[] 2.2 判断是否以指定字符串开始或结 ...

  7. string 字符串中字符无效_7.3 C++字符串类 | 使用string输出

    C++字符串类 C++提供了一种新的数据类型:字符串类型,它和char,int类型一样,可以用来定义变量,用一个名字代表一个字符序列,这就是字符串变量. 读者需要明白string并不是C++本身具有的 ...

  8. Java中String类的concat方法___java的String字符串的concat()方法连接字符串和“+“连接字符串解释

    Java中String类的concat方法 在了解concat()之前,首先需要明确的是String的两点特殊性. 长度不可变 值不可变 这两点从源码中对String的声明可以体现: private ...

  9. String字符串工具类 StringUtils.java

    简介 api 是否为空 checkEmpty(String str); 目标字符串是目标数组中的一个 checkContains(String str, String[] target); 限制最大长 ...

最新文章

  1. json jsono wsdl_记录一下json的生成
  2. Lambda架构与推荐在电商网站实践
  3. Mysql 的隔离级别与锁
  4. 解决del找不到关键词‘province‘的问题和思想
  5. [LeetCode] Convert Sorted Array to Binary Search Tree
  6. hibernate 错误 could not determine type for
  7. 一些流行的颜色及其RGB值
  8. python爬虫基本思路
  9. 思考的救赎(一):三消游戏实现探索
  10. PHP剧影评系统的设计与实现毕业设计源码140859
  11. 一招教你如何在简历上突出工作经验!(干货)
  12. php 获取rsa 模数,使用Python从公钥获取RSA指数和模数
  13. VUE 自定义子组件v-bind及v-on指令的大小写问题
  14. SOEM 源码解析 ecx_LRD
  15. 编写Java程序时的一些经验总结
  16. rocket使用实例
  17. 【操作教程】RTSP/GB28181/SDK/Ehome协议人脸识别/车牌识别视频智能分析系统EasyCVR如何获取播放地址和流地址?
  18. 一本通 1.5.3 字符数组
  19. 【Java】对象的实例化
  20. STM32 FLASH 简单读写操作【有代码】

热门文章

  1. swag您的装置不支持_209P型铁路客车转向架之轮对轴箱弹簧定位装置简介
  2. android studio创建构造方法,使用Android studio创建你的第一个项目
  3. Asp.Net母版页和内容页运行机制
  4. 社保系列11《ATR》
  5. 关于XP下OpenGL的配置
  6. spring集成compass中出现的问题和总结
  7. Nobot控件------拒绝机器人行为
  8. 49 -算法 -LeetCode 107 107. 二叉树的层序遍历 II 栈队列vector
  9. 360手机浏览器_网信办出手:华为、360、qq等8款手机浏览器被列入首批重点整治名单...
  10. 报告PPT|Python编程之美(45页)