C++(五)String 字符串类

简介: 本文档详细介绍了C++中的`string`类,包括定义、初始化、字符串比较及数值与字符串之间的转换方法。`string`类简化了字符串处理,提供了丰富的功能如字符串查找、比较、拼接和替换等。文档通过示例代码展示了如何使用这些功能,并介绍了如何将数值转换为字符串以及反之亦然的方法。此外,还展示了如何使用`string`数组存储和遍历多个字符串。

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

1. 定义和初始化


int main(){

    string *ps= new string("hello");
    cout<<ps<<endl; //0xf55e40
    cout<<*ps<<endl; //hello


    //初始化字符串
    string s1="world";
    string s2("next");

    cout<<sizeof(string )<<endl; //32
    cout<<sizeof(s1)<<endl; //32
    cout<<sizeof(s2)<<endl; //32
    cout<<s1<<endl; //world
    cout<<s2<<endl; //next

    //字符串再次赋值
    s1=s2;
    cout<<s1<<endl; //next

    //cin输入字符串
    //字符串会获取输入第一个空格之前的的数据
    //cin>>s1;
    //cout<<s1<<endl; //输入的数据


    //使用getline函数获取输入的所有数据,包括空格
    getline(cin,s1);
    cout<<s1<<endl; //输入的数据
}

2. 字符串比较

string 重载了运算符+ < > = != += 使字符串的操作变的非常简单。其运
算方式类似于普通数值运算,这是运算符重载的好处。


int main() {
    string s="hello world";
    string x="hello world";
    string y="helloworld!";



    cout<<s.size()<<endl; //获取字符串长度  11
    cout<<s.length()<<endl; //获取字符串长度  11
    cout<<s.empty()<<endl; //判断字符串是否为空  0


    //查找字符串
    cout<<s.find("l")<<endl; //查找字符串中第一个出现的位置  2
    cout<<s.find("l",3)<<endl; //查找字符串中从位置3开始出现的第一个位置  3


    //比较字符串
    cout<<s.compare(x)<<endl; //比较两个字符串是否相等  0
    cout<<s.compare(y)<<endl; //比较两个字符串是否相等  -1
    if(s==x){
        cout<<"s==x"<<endl;
    }
    if(s==y){
        cout<<"s==y"<<endl;
    } else{
        cout<<"s!=y"<<endl;
    }

    //截取字符串
    cout<<s.substr(3)<<endl; //获取从位置3开始到结尾的字符串  lo world
    cout<<s.substr(3,5)<<endl; //获取从位置3开始的5个字符  lo wor



    //拼接
    string z=s+x;
    cout<<z<<endl; //hello worldhello world

    y+=s;
    cout<<y<<endl; //helloworld!hello world

    //替换
    string a="hello world";
    string b=a.replace(3,5,"good");
    cout<<a<<endl; //hello world
    cout<<b<<endl; //hegoodd world
}

数值与字符串互转函数

value to string

string to_string(int val);
string to_string(unsigned val);
string to_string(unsigned long val);
string to_string(long long val);
string to_string(unsigned long long val);
string to_string(float val);
string to_string(double val);
string to_string(long double val);
    int inta = 1234;
    string str = to_string(inta);
    cout<<str<<endl; //1234
    str += "5678";
    cout<<str<<endl; //12345678

string to value

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 long stoll(const string& str, size_t* idx = 0, int base = 10);
unsigned long stoul(const string& str, size_t* idx = 0, int base = 10);
unsigned long long stoull(const string& str, size_t* idx = 0, int base = 10);
float stof(const string& str, size_t* idx = 0);
double stod(const string& str, size_t* idx = 0);
long double stold(const string& str, size_t* idx = 0);

函数参数:

  • str: 要转换的字符串。
  • idx: 指向当前解析位置的指针。
  • base: 进制。

返回值:

  • 转换后的数值。

    string str = "12345678";
    int inta = stoi(str);
    cout<<inta<<endl; //12345678

    string str = "1111a";
    int a  = stoi(str);
    a++;
    cout<<a<<endl;//1112

    string strbin = "-10010110001";
    string strhex= "0x7f";
    int bin = stoi(strbin,nullptr,2);
    int hex = stoi(strhex,nullptr,16);
    cout<<"bin:"<<bin<<endl;
    cout<<"hex:"<<hex<<endl;

string 数组


    string strArray[10] = {
            "0",
            "1",
            "22",
            "333",
            "4444",
            "55555",
            "666666",
            "7777777",
            "88888888",
            "999999999",
    };
    for(int i=0; i<10; i++)
    {
        cout<<strArray[i]<<endl;
    }
相关文章
|
1月前
|
C语言 C++ 容器
【c++丨STL】string模拟实现(附源码)
本文详细介绍了如何模拟实现C++ STL中的`string`类,包括其构造函数、拷贝构造、赋值重载、析构函数等基本功能,以及字符串的插入、删除、查找、比较等操作。文章还展示了如何实现输入输出流操作符,使自定义的`string`类能够方便地与`cin`和`cout`配合使用。通过这些实现,读者不仅能加深对`string`类的理解,还能提升对C++编程技巧的掌握。
72 5
|
1月前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
52 2
|
1月前
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
109 5
|
1月前
|
索引 Python
String(字符串)
String(字符串)。
33 3
|
1月前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
102 4
|
1月前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
129 4
|
2月前
|
NoSQL Redis
Redis 字符串(String)
10月更文挑战第16天
49 4
|
2月前
|
安全 Java 测试技术
Java零基础-StringBuffer 类详解
【10月更文挑战第9天】Java零基础教学篇,手把手实践教学!
58 2
|
3月前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
48 0
java基础(13)String类