大话C++:第21篇 string详解

1 string类概述

C++ 的 std::string 类是 C++ 标准库中的一个重要组件,用于表示和操作字符串。std::string 类提供了许多有用的成员函数,允许你执行各种字符串操作,如连接、比较、搜索、替换、插入和删除等。

std::string 类是定义在 <string> 头文件中的。要使用 std::string 类型及其相关的函数和操作符,我们需要在源代码文件中包含该头文件。

2 string构造字符串

std::string类提供了多种构造字符串的方法。这些构造函数允许你使用不同类型的输入来初始化字符串对象。常用的构造方法包括:

  • std::string(): 创建一个空字符串。

  • std::string(const char* s): 使用 C 字符串 s 创建一个字符串。

  • std::string(const std::string& str): 使用另一个字符串 str 创建一个副本。

  • std::string(size_t n, char c): 创建一个包含 n 个字符 c 的字符串。

  • std::string(const_iterator first, const_iterator last): 使用迭代器 firstlast 创建一个字符串。

  • std::initializer_list:使用初始化列表创建字符串;这是C++11引入的初始化列表语法。

2.1 C字符串构造string对象

在C++中,可以使用C风格的字符串(即,以空字符'\0'结尾的字符数组)来构造std::string对象。这是通过使用std::string的构造函数std::string(const char* s)来实现的,该构造函数接受一个指向C风格字符串的指针。

#include <iostream>
#include <string>

int main() 
{
    // 定义一个C风格字符串
    const char* cstr = "Hello, World!";

    // 使用C风格字符串构造std::string对象
    std::string str(cstr);

    // 输出std::string对象
    std::cout << str << std::endl;

    return 0;
}

2.2 复制构造string对象

在C++中,复制构造std::string对象是指使用另一个已经存在的std::string对象来初始化一个新的std::string对象。复制构造函数会创建一个新的std::string对象,其内容与原始对象相同。

#include <iostream>
#include <string>

int main() 
{
    // 创建一个std::string对象
    std::string original("Hello, World!");

    // 使用复制构造函数复制original
    std::string copy(original);

    // 输出原始对象和复制的对象
    std::cout << "原始字符串: " << original << std::endl;
    std::cout << "复制字符串: " << copy << std::endl;

    return 0;
}

除了上述调用拷贝构造函数来复制构造string对象外,我们还可以通过赋值操作符=将一个已存在的std::string对象的内容赋给另一个std::string对象。

#include <iostream>
#include <string>

int main() 
{
    // 创建一个std::string对象
    std::string original("Hello, World!");

    // 使用赋值运算符复制original
    std::string copy;
    copy = original;

    // 输出原始对象和复制的对象
    std::cout << "原始字符串: " << original << std::endl;
    std::cout << "复制字符串: " << copy << std::endl;

    return 0;
}

2.3 std::initializer_list初始化string对象

在C++中,std::initializer_list是一种特殊的模板类,它允许你使用花括号{}初始化一个对象。自C++11起,std::string类提供了接受std::initializer_list<char>的构造函数,可以使用花括号内的字符列表来初始化一个std::string对象。

#include <iostream>
#include <string>
#include <initializer_list>

int main() 
{
    // 使用std::initializer_list初始化std::string对象
    std::string str{"Hello, World!"};

    // 输出string对象
    std::cout << str << std::endl;

    return 0;
}

3 string类输入

在C++中,std::string类提供了多种方式来输入字符串。最常用的方法包括:

  • 通过标准输入流std::cin,它允许从键盘输入字符串。

  • 使用std::getline函数从输入流中读取一行作为字符串。

3.1 std::cin输入字符串

std::cin会从标准输入读取一个单词(由空格、制表符或换行符分隔)。

#include <iostream>
#include <string>

int main() 
{
    // 声明一个std::string对象
    std::string str;

    // 使用std::cin输入字符串(不支持空格)
    std::cout << "请输入一个不包含空格的字符串: ";
    std::cin >> str;

    // 输出输入的字符串
    std::cout << "你输入的字符串是: " << str << std::endl;

    return 0;
}

注意std::cin 默认使用空白字符(如空格、制表符和换行符)作为分隔符,因此如果我们想要输入一个包含空格的字符串,那么我们需要使用 std::getline 函数,而不是直接使用 std::cin

3.2 std::getline函数输入字符串

如果我们想要输入包含空格的整行字符串,你应该使用std::getline函数。该函数会从输入流中读取一行,直到遇到换行符,然后将整行内容存储在std::string对象中。

#include <iostream>
#include <string>
#include <sstream>

int main() 
{
    // 声明一个std::string对象
    std::string str;

    // 使用std::getline输入字符串(包括空格)
    std::cout << "请输入一行字符串: ";
    std::getline(std::cin, str);

    // 输出输入的字符串
    std::cout << "你输入的字符串是: " << str << std::endl;

    return 0;
}


欢迎您同步关注我们的微信公众号!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值