一 <string>

1 string类常见成员函数

(1)属性相关

s.empty()   s为空时返回true,否则返回false

s.size()      返回s中字符的个数,不包括结尾标志字符

(2)读取,设置字符串

 s.c_str()   返回c风格的字符串形式,注意:返回的字符指针是一个底层const指针

 basic_string substr( size_type pos = 0,size_type count = npos ) const;

返回string对象的部分字符串 [pos, pos+count),默认为从第一个字符开始,最后一个字符结束

s[n] 返回s中第n个字符的引用,n: [0,s.size()-1],超出范围的n将引发不可预知的结果

s1 + s2  返回s1与s2连接后的结果(其中s1与s2至少有一个是string类型的,其他的可以是字符字面值或者字符串字面值)eg: string s6 = s1 + “,”+”world”这个语句是正确的,等价于string s6 = (s1 + “,”)+”world”

s1 = s2 用s2的副本代替s1中原来的字符

(3)比较字符串 s1== (!= > >= < <=)s2

s1 == s2 : 长度相同,相同位置的字符也相同

如果两个字符串的长度不相等,且较短的string对象的每个字符都与较长string对象对应位置的字符相同,就说较短string对象小于较长string对象

如果两个string对象在某些对应位置上的字符不一致,则string对象的比较结果取决于第一个不相同的字符的asc2码值的大小比较

2 该头文件中的其他工具函数(c++11)

int stoi( const std::string& str, std::size_t* pos = 0, int base = 10 );

int stoi( const std::wstring& str, std::size_t* pos = 0, int base = 10 );

long stol( const std::string& str, std::size_t* pos = 0, int base = 10 );

long stol( const std::wstring& str, std::size_t* pos = 0, int base = 10 );

long long stoll( const std::string& str, std::size_t* pos = 0, int base = 10 );

long long stoll( const std::wstring& str, std::size_t* pos = 0, int base = 10 );

unsigned long stoul( const std::string& str, std::size_t* pos = 0, int base = 10 );

unsigned long stoul( const std::wstring& str, std::size_t* pos = 0, int base = 10 );

unsigned long long stoull( const std::string& str, std::size_t* pos = 0, int base = 10 );

unsigned long long stoull( const std::wstring& str, std::size_t* pos = 0, int base = 10 );

float stof( const std::string& str, std::size_t* pos = 0 );

float stof( const std::wstring& str, std::size_t* pos = 0 );

double stod( const std::string& str, std::size_t* pos = 0 );

double stod( const std::wstring& str, std::size_t* pos = 0 );

long double stold( const std::string& str, std::size_t* pos = 0 );

long double stold( const std::wstring& str, std::size_t* pos = 0 );

std::string to_string( int value );

std::string to_string( long value );

std::string to_string( long long value );

std::string to_string( unsigned value );

std::string to_string( unsigned long value );

std::string to_string( unsigned long long value );

std::string to_string( float value );

std::string to_string( double value );

std::string to_string( long double value );

std::wstring to_wstring( int value );

std::wstring to_wstring( long value );

std::wstring to_wstring( long long value );

std::wstring to_wstring( unsigned value );

std::wstring to_wstring( unsigned long value );

std::wstring to_wstring( unsigned long long value );

std::wstring to_wstring( float value );

std::wstring to_wstring( double value );

std::wstring to_wstring( long double value );

二 <cctype>

头文件中定义的处理字符的函数 →前12个可以跟正则表达式的12个特殊符号([:alnum:]等等)对比记忆

1 字母数字

int isalnum( int ch ); [true: 0-9,a-z,A-Z]

int isalpha ( int ch ); [true: a-z,A-Z]

int isupper ( int ch ); [true: A-Z]

int islower ( int ch ); [true: a-z]

int isdigit ( int ch ); [true: 0-9]

int isxdigit ( int ch ); [true: 0-9,a-f,A-F]

2 空白字符

int isblank ( int ch ); [true: ‘ ’,‘\t’]

int isspace ( int ch ); [true: ‘ ’, ‘\f’,‘\n’,‘\t’, ‘\v’, ‘\r’]

3 其他字符

int iscntrl ( int ch ); [true:控制字符,即ASCII中[0,31]范围内,还有127的字符]

int isprint ( int ch ); [true:可以打印的字符(字母, 数字, 标点符号, 空格),即ASCII中[32,126]范围内的字符]

int isgraph ( int ch ); [true:除空格外的可打印字符,即ASCII中[33,126]范围内的字符]

int ispunct ( int ch ); [true:标点字符,即graph中除了字母跟数字]

4 转换函数

int tolower ( int ch );如果ch是大写字母,输出对应的小写字母,否则输出ch

int touper ( int ch ); 如果ch是小写字母,输出对应的大写字母,否则输出ch

三 <cstring>

该头文件里面有一些处理c风格字符串的函数,一般老项目或者面试笔试的时候面试官喜欢问,我刚毕业那会儿就被问了,而且没回答上来就被pass,哎,往事不堪回首……

  void* memcpy( void* dest, const void* src, std::size_t count );

内存拷贝函数,把src指向的内容,按字节为单位复制到dest指向的内存区域.

注意: 当两个指针指向的区域在count数量内有重叠的话会出问题

void* memset( void* dest, int ch, std::size_t count );

将dest指向的内存地址的前count个字符填充位ch

char* strcpy( char* dest, const char* src );

拷贝src指向的字符串到dest中,包括‘\0’

std::size_t strlen( const char* str );

返回str指向的字符串的长度,不包括‘\0’

四 <cstdlib>

该头文件里面也还有一些处理c风格的字符串的函数。

         double atof( const char *str );

         int  atoi( const char *str );

         long atol( const char *str );

         long long atoll( const char *str );  //(since C++11)

string相关总结的更多相关文章

  1. JAVA基础5——与String相关的系列(1)

    与String相关的系列 String, 是JAVA中常见的一个引用类型,且其具有一定的特殊性. String类型被设置为final型,即不可继承,也就不可修改其中的实现. String可以改变吗 S ...

  2. 03匿名内部类、eclipse快捷键、String相关知识

    03匿名内部类.eclipse快捷键.String相关知识-2018.7.11 1.匿名内部类(只针对重写一个方法时候使用,不能向下转型,因为没有子类类名) new Inter(){ public v ...

  3. 【Java基础】String 相关知识点总结

    String 相关知识点总结 字符串的不可变性 概述 String 被声明为 final,因此它不可继承 在 Java8 中,String 内部使用 char 数组存储数据 public final ...

  4. string相关

    1.find相关 string s="abcd"; size_t pos0 = s.find_first_of("dcb");         1    //返 ...

  5. JDK源码分析(1)之 String 相关

    ​在此之前有无数次下定决心要把JDK的源码大致看一遍,但是每次还没点开就已被一个超链接或者其他事情吸引直接跳开了.直到最近突然意识到,因为对源码的了解不深导致踩了许多莫名其妙的坑,所以再次下定决心要把 ...

  6. JAVA基础部分复习(一、8中基础类型,以及String相关内容)

    以下是关于java中8种基本类型的介绍说明: package cn.review.day01; /** * java基础复习,8种数据类型 * (byte,short,long,int,double, ...

  7. leetcode String相关

    目录 3无重复字符的最长子串 5最长回文子串 8字符串转换整数(atoi), 9回文数,7整数反转 28实现strStr(), 459重复的子字符串(KMP) 43字符串相乘 71简化路径 93复原I ...

  8. 学习一下 JVM (二) -- 学习一下 JVM 中对象、String 相关知识

    一.JDK 8 版本下 JVM 对象的分配.布局.访问(简单了解下) 1.对象的创建过程 (1)前言 Java 是一门面向对象的编程语言,程序运行过程中在任意时刻都可能有对象被创建.开发中常用 new ...

  9. String相关介绍

    String 字符串是常量,创建后不可改变. 字符串字面值存储在字符串池中,可以共享. String s1 = "Runoob"; // String 直接创建 String s2 ...

随机推荐

  1. genymotion模拟器访问本地服务器

    测试环境为:Ubuntu + android studio + genymotion + wifi 我用模拟器访问电脑上的服务器,需要使用的IP为10.0.3.2,其他的什么10.0.2.2和10.0 ...

  2. linux和windows共享文件

    开发板的文档上说可以使用nfs共享文件夹,提供的命令如下: mount –t nfs –o nolock 192.168.1.244:/usr/ /mnt/ 因此我在我的win10上设了共享文件夹,然 ...

  3. Windows 下安装cryptography-1.6

    由于proxy限制不能使用pip install cryptography命令安装cryptography,所以安装这个python库折腾了一天多的时间,差点就怀疑人生了,好在柳暗花明,惊喜出现了.下 ...

  4. jsp中target="_blank"的用法

    对于点击查询按钮或a标签等,打开一个新页面并显示结果的做法如下: 1.form表单: 在form标签上加target="_blank"后,点击搜索按钮,显示查询结果时会打开一个新页 ...

  5. 《Android深度探索HAL与驱动开发》第一章阅读心得

    首先了解到Android系统架构是由四层构成:其中第一层是Linux内核,他的作用是负责Linux的驱动程序以及内存.进程.电源等管理操作:第二层是C/C++代码库,也就是Linux下.so的文件:第 ...

  6. html基础二

    空标签 <br>用于分行 <hr>在 HTML 页面中创建水平线 “ctrl+/”用于在代码输入时注释  注释掉的内容将不会在浏览器上显示  这样方便在代码输入提高可读性 方便 ...

  7. mysql 根据某字段特定值排序

    比如: 表 :user 字段:orders (值为 1,2,3) 要求根据字段  orders 按2 -> 1 -> 3 排序 使用以下语句实现SELECT *FROM userORDER ...

  8. HttpClientUtil简介

    使用HttpClient发送请求.接收响应. http协议可以说是现在Internet上面最重要,使用最多的协议之一了,越来越多的java应用需要使用http协议来访问网络资源,HttpClient ...

  9. Java JDBC使用方法

    public class JDBC{public static void main(String[] args){//查询数据selectData();}//查询数据的方法private static ...

  10. 威纶触摸屏和三菱PLC3S之间的通信设置

    触摸屏软件中: PLC型号:FX3U\FX3G 接口类型:RS-485 4W 端口:COM2(19200,E,7,1)