首页 > 其他分享 >STL | string

STL | string

时间:2024-05-19 18:18:45浏览次数:16  
标签:const string STL pos char type size

string

介绍

c++支持两种类型的字符串,一以NULL结尾的c风格字符串;二string类型的字符串

头文件

string是basic_string类模板使用char特化的类型

#include <string>

typedef basic_string<char, char_traits<char>, allocator<char>> string;

初始化

// 默认string对象,长度为0
string();
// 使用c风格的字符串初始化string
string(const char* s);
// 创建包含n个元素的string对象,并将每个元素赋值为c
string(size_type n, char c);
// 拷贝构造
string(cosnt string& str);
// 将string初始化为s的前n个字符
string(const char* s, size_type n);

template<class Iter>
string(Iter begin, Iter end);

// 将string初始化为str从pos开始到结尾的字符
string(const string& str, size_type pos = 0, size_type n = npos);

// 移动构造             
string(sting&& str) noexcept

// 初始化列表初始化
string(initializer_list<char> il)

函数

getline

将字符串从输入流中一行一行提取出来
方法一:使用默认分隔符(换行),ctrl+Z结束while循环,此时会将cin内部状态标志设置为eofbit,须调用cin.clear(),才能继续使用cin

string str;
vector<string> vec;
while(getline(cin, str)) {
    vec.push_back(str);
}

方法二:使用空格作为分隔符,ctrl+Z结束while循环,此时会将cin内部状态标志设置为eofbit,须调用cin.clear(),才能继续使用cin

string str;
vector<string> vec;
while(getline(cin, str, ' ')) {
    vec.push_back(str);  
}

与其他类型的转换

string转换为其他类型

// 将字符序列转换为double,idx表示第一个未转换字符的索引
double stod(const string& str, size_t* idx = 0)

// 转换为float
float stof(const string& str, size_t* idx = 0) 
// 转换为整型,base表示基,默认为十进制
int stoi(const string& str, size_t* idx = 0, int base 10)
long stol(const string& str, size_t* idx = 0, int base 10)
long double stold(const string& str, size_t* idx = 0)
long long stoll(const string& str, size_t* idx = 0, int base 10)
stoul
stoull

其他类型转换为string

// 有float double等参数的重载
string to_string(int value);
## 容量
// 返回字符串的长度size和length相同
size_type size() const;
size_type length() const;

// 返回最大可能的字符串长度
size_type max_size() const;
// 调整字符串的长度
void resize(size_type n);
// 新增部分填充c
void resize(size_type n, char c);
// 返回当前分配的存储空间
size_type capacity() const;
// 预留n的空间
void reserver(size_type n);
// 减少分配的存储空间以适应当前大小
void shrink_to_fit() noexcept;

访问

const_reference at(size_type pos) const;
reference at(size_type pos);

修饰器

void clear();
void push_back(char c);
void pop_back();
iterator insert(const_iterator pos, char c);
iterator erase(const_iterator pos);
iterator(const_iterator first, const_iterator last);

添加

string& append(const string& other);
string& append(const string& other, size_type pos, size_type count);
// 追加c字符串的count个字符
string& append(const char* s, size_type count);
string& append(const char* s);

插入

void insert(size_type pos, const string& other);
// 在pos位置插入c字符串
void insert(size_type pos, const string& other, size_type other_pos, size_type count);
void insert(size_type pos, const char* s, size_type count);
void insert(size_type pos, const char* s);

复制

// 返回从pos开始的子字符串, npos超过字符串末尾时会自动调整为字符串末尾
string substr(size_type pos = 0, size_type count = npos) const; 

比较

返回负数表示当前字符串小于other,整数表示大于other,0表示相等

int compare(const string& other) const;
int compare(size_type pos, size_type count, const string& other) const;

int compare(size_type pos, size_type count, const string& other, 
            size_type other_pos, size_type other_count) const;

查找

返回查找到符合条件的索引位置

size_type find(const string& other) const;
size_type find(const string& other, size_type pos) const;
size_type find(const char* s) const;
size_type find(const char* s, size_type pos) const;
size_type find(const char c) const;
size_type find(char c, size_type pos);

// 反向查找
size_type rfind(const string& other) const;
size_tpye rfind(const char* s) const;
size_type rfind(char c) const;

// 查找第一次出现
size_type find_first_of(const string& other) const;
size_type find_first_of(const char* s) const;
size_type find_first_of(char c) const;

// 查找最后一次出现
size_type find_last_of(const string& other) const;
size_type find_last_of(const char* s) const;
size_type find_last_of(char c) const;

判空

bool empty();

交换

void swap(string& other);

其他

// 返回c字符串
const char* c_str() const;
// 返回字符串数组的指针
char* data() const;

运算符

  • operator+
  • operator+=
  • operator!=
  • operator=
  • operator==
  • operator<
  • operator<=
  • operator<<
  • operator>
  • operator>=
  • operator>>
  • operator[]

标签:const,string,STL,pos,char,type,size
From: https://www.cnblogs.com/cscpp/p/18200566

相关文章

  • net.sf.jsqlparser.schema.Column.withColumnName(Ljava/lang/String;)Lnet/sf/jsqlpar
    https://blog.csdn.net/yuanzhugen/article/details/133648431 SpringBoot整合mybatisplus报错:net.sf.jsqlparser.schema.Column,isavailablefromthefollowinglocationsAnattemptwasmadetocallthemethodnet.sf.jsqlparser.schema.Column.withColumnName(Ljava/l......
  • Java中的这些String特性可能需要了解下
    先总结下,String类具有以下特性:不可变性(Immutable):String对象一旦创建就不能被修改。任何对String对象的操作都会返回一个新的String对象,原始对象保持不变。字符串表(StringTable):StringTable表是一种存储字符串常量的内存区域,它可以提高字符串的重用率和性能。在创建字符串时,如果......
  • WPF Color ColorConverter.ConvertFromString convert hex to readable color
    stringcolorStr="#FF00008B";ColorbrushColor=(Color)ColorConverter.ConvertFromString(colorStr);  usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows;us......
  • Uri.EscapeDataString 和 Server.UrlEncoding 的区别
    今天在iis中访问一个即含有空格又含有#的文件名时,通过iis直接访问都无法到达,显示404,即便是urlencode文件名后依然无济于事,最后通过gpt问到了答案。Uri.EscapeDataString和Server.UrlEncode是.NETFramework中用于URL编码的两个方法,它们有以下区别:命名空间和所属类:Uri.Es......
  • STL | vector操作总结
    vector随机访问在序列末尾插入和删除元素为常量时间,而在中间插入和删除元素需要线性时间介绍vector为可变长的数组(动态数组),定义的vector数组可以随时添加和删除元素当vector容量不足以容纳新增元素时会扩容为两倍(不同编译器有不同的实现,GCC以两倍扩容),需要将元素复制到新开辟......
  • { [key: string]: any } 是 TypeScript 中的一种类型注解
    {[key:string]:any} 是TypeScript中的一种类型注解,它描述了一个对象的类型。让我来解释一下这个类型注解,并举一个例子来说明它的用法。在TypeScript中,{[key:string]:any} 表示一个对象,其中键是字符串类型,而值可以是任意类型。{} 表示这是一个对象类型。[key:s......
  • 题解:CF1954F Unique Strings
    link计数类*3100首次独立过纪念版题解。首先我们考虑一个去重的问题。貌似针对循环同构去重的问题,只能从循环节上入手。那么我们考虑设\(dp(d)\)为最小循环节长度恰好为\(d\)不同方案数个数,则答案为:\[\sum_{d=1}^ndp(d)=\sum_{d|n}\frac{dp(d)}{d}\]这似乎是一条可行......
  • JavaScript object array sort by string bug All In One
    JavaScriptobjectarraysortbystringbugAllInOnebug//purestringsarray,sortOK✅letarr=["banana","strawberry","apple"];JSON.stringify(arr.sort());//'["apple","banana","strawbe......
  • JavaScript Object valueOf & toString All In One
    JavaScriptObjectvalueOf&toStringAllInOneclassArrayWrapper{arr:number[];constructor(nums:number[]){this.arr=nums;}//✅改写Object内置方法valueOf,返回一个number整数//❓object相加(本质上是object序列化后的string......
  • Bear and String Distance
    传送锚点:codeforces.comCopy426bearoutputroarinput27afoutputdbinput31000heyoutput-1思路此题答案不限有点类似贪心,每一步都要做到最佳,将k不断变小code#include<iostream>#include<vector>#include<algorithm>#include<cstring>usingnamesp......