LeetCode C++ string

 

 

 

 

(1)string追加问题 

string res;

res+=s[i];   

//res[i]=s[i]; res没有开辟空间只能用追加+= 不可用赋值

//res+=s;既能追加string字符串 也能是char字符

 //res.append(s[i]);只能追加string字符串 不能是char字符

//res.push_back(s[i]));只能追加char字符 不能是string字符串

(2)string 大小写转化问题

1.ASCII码小写比大写字母大32  upperCase=littleCase-32;    upperCase littleCase都是char型字符

2.tolower() / toupper()   

  所在头文件<ctype.h>

  str[i] = tolower(str[i])

3.transform(res.begin() , res.end() ,des.begin() , ::tolower);

  transform(res.begin() , res.end() ,des.begin() , ::toupper);

 所在头文件 <algorithm>

 res 、des都是string类型字符串(任可包含任意字符 如空格 非字母等字符)

 注意:在使用transform函数之前要先对目标string的size使用resize()函数重置des.resize(res.size());

(3)isalnum(c)

 判断所传字符c是否是字母或者数字  若是返回一个非0 值 否则返回0;

 所在头文件<ctype.h>

   sub=s.substr(int first,int end)//截取子串  /区分java .Substring()

 s.compare(s1)//string 比较

#include <iostream>
#include <string>
using namespace std;
int main ()
{
    string A ("aBcdef");
    string B ("AbcdEf");
    string C ("123456");
    string D ("123dfg");
    //下面是各种比较方法
    int m=A.compare (B); //完整的A和B的比较
    int n=A.compare(1,5,B,4,2); //"Bcdef"和"AbcdEf"比较  从...开始长度为...的子串比较
    int p=A.compare(1,5,B,4,2); //"Bcdef"和"Ef"比较
    int q=C.compare(0,3,D,0,3); //"123"和"123"比较
    cout << "m = " << m << ", n = " << n <<", p = " << p << ", q = " << q << endl;
    cin.get();
    return 0;
}

(4)reverse(s.begin(),s.end())

 逆置一个string字符串s

 所在头文件<algorithm>

(5)find() /index()

int find(char c, int pos = 0) const;//从pos开始查找字符c在当前字符串时候首次出现的位置
int find(const char *s, int pos = 0) const;//从pos开始查找字符串s在当前串中首次出现的位置
int find(const char *s, int pos, int n) const;//从pos开始查找字符串s中前n个字符在当前串中首次出现的位置
int find(const string &s, int pos = 0) const;//从pos开始查找字符串s在当前串中首次出现的位置

post可以不指定默认从头开始 可用于判断两个字符串是否通同构

注意区分C++string与Java String的区别

(6) string与数据的转换

1、利用stringstream类(可以转成任意类型不只是整型)

.字符串到整数​​​​​​

stringstream sstr(str);int x;sstr >> x;

 整数到字符串

stringstream sstr;int x;sstr << x;string str = sstr.str();

2、标准库方法

需要用到的头文件: #include <stdlib.h>

#include<string.h>

c++11提供了to_string方法,可以方便的将各种数值类型转换为 字符串类型:

std::string to_string(int value);std::string to_string(long int value);std::string to_string(long long int value);std::string to_string(unsigned int value);std::string to_string(unsigned long long int value);std::string to_string(float value);std::string to_string(double value);

 还提供了stoxxx方法,将string转换为各种类型的数据

std::string str = "1000";int val = std::stoi(str);long val = std::stol(str);float val = std::stof(str);

 c++11还提供了字符串(char*)转换为整数和浮点类型的方法:

atoi: 将字符串转换为int
atol: 将字符串转换为long
atoll:将字符串转换为long long
atof: 将字符串转换为浮点数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值