C++入门编程----C++基本数据类型(6)

字符

字符类型是由一个字符组成的字符常量或者字符变量。在Cpp中,关键字char表示字符类型,它是用单引号表示的单个字符。例如:‘a’、'4'、'!',而' '是空字符。

使用关键字char可以定义字符类型,示例代码如下:

#include <iostream>

int main()
{
    char a; // 声明字符变量a
    // 给字符变量a赋值
    a = 'A';
    // 声明字符变量b并赋值
    char b = 'B';

    std::cout << a << std::endl << b;
    return 0;
}

上述代码分别定义字符a和b,数值分别为'A' 和'B'其实字符分成两大类:可见字符和不可见字符。

  • 可见字符是ASCII码的32至126的正整数,也就是能将字符进行输出处理,如字母A-Z、a-z等。
  • 不可见字符是ASCII码的0~31及127(共33个)是控制字符或通信专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等。

字符之间还支持算术运算和比较运算,示例代码如下:

#include <iostream>
int main()
{
    // 比较字符a和b
    bool r = 'a' < 'b';
    std::cout << r << std::endl;
    // 字符a和b的和
    int c = 'a' + 'b';
    std::cout << c << std::endl;
    // 字符a和b的差
    int d = 'a' - 'b';
    std::cout << d << std::endl;
    // 字符a和b的乘积
    int e = 'a' * 'b';
    std::cout << e << std::endl;
    // 字符d和"的商
    float f = 'd' / "";
    std::cout << f << std::endl;
}

字符串

C++有两种方式表示字符串类型,一种来自C语言,叫做C语言风格;另一种分格来自C++内置类string,称为string类型风格。

C语言风格是将字符串置于字符数组中,每个字符位于一个数组元素之中,并且以空字符('\0')结尾。它又分为字符数组和字符串指针,示例如下

#include <iostream>
int main()
{
    // c语言分格字符数组
    char a[] = "hello world";
    std::cout << a;
    // c语言分格字符串指针
    char* b = "hello,world!";
    std::cout << b;
}

string类型风格是c++增加了对字符串的支持,处理七字符串相对方便,完全可以代替C语言中的字符数组或字符串指针,示例代码如下:

#include <iostream>
int main()
{
    // 初始化并创建字符串
    std::string a = "hello,World!";
    std::cout << a << std::endl;
}

格式化处理

字符串格式化处理是将字符串按照一定格式输出,C++提供多种方法格式化字符串,详细说明如下:

  1. 使用std::ostringstream,示例代码如下:

// 导入内置库
#include <iostream>
#include <sstream>
#include <string>
int  main()
{
    // ostringstream是字符串流类
    std::ostringstream  oss;
    // 字符串依次写入ostringstream
    oss << "1 + 2 = " << 3;
    // 输出字符串
    std::string result = oss.str();
    std::cout << result << std::endl;
}
  1. 使用printf和sprintf,示例代码如下:

// 导入内置库
#include <cstdio>
#include <iostream>
int main()
{
    // 直接输出格式化的字符串
    printf("1 + 2 = %d\n",3);
    //将格式化的字符串写入字符串数组
    char buffer[100];
    sprintf(buffer,"1 + 2 = %d",3);
    std::cout << buffer << std::endl;
}
  1. 使用std::format,C++20引入的字符串格式化方法,示例代码如下:
// 导入内置库
#include <format>
#include <string>
#include <iostream>

int main() {
    std::string result =  std::format("1 + 2 = {}",3);
    std::cout << result << std::endl;
}

除了上述方法之外,还有很多方法实现字符串格式化功能,此处不在一一详细讲述了,笔者建议采用C++20引入d的std::format。

字符串截取

//导入内置库
#include <string>
#include <iostream>
int main()
{
    std::string  str = "hello,World";
    //找到字符串World的首个字母起始位置
    int pos = str.find("World");
    // 截取字符串Word
    // str.substr第一个参数是字符串起始位置,第二个参数终止位置
    std::string result = str.substr(pos,5);
    std::cout << result;
}

字符串替换

C++的字符串查找可以使用find和rfind方法,find用于查找子串或字符在字符串中的位置;rfind是从字符串的末尾开始查找子串或字符,示例代码如下:

// 导入内置库
#include <iostream>
#include <string>
int main()
{
    // find方法
    std::string str = "Hello,World!";
    int pos = str.find("World");
    std::cout << "子串World在字符串Hello,World!的起始位置为:" << pos << std::endl;

    // rfind方法
    int pos1 = str.rfind("o");
    // rfind是从末端开始查找,找到后则返回从左到右的位置
    // 变量pos1的值等于8,则查找World里面的o
    std::cout << "子串or在字符串Hello,World!的起始位置为:" << pos1  << std::endl;

}

字符串拼接

字符串拼接是将多个字符串组合新的字符串,C++字符串拼接可以使用+运算符、append方法、+=运算符、stringstream方法和字符串格式化实现,示例代码如下:

// 导入内置库
#include <cstdio>
#include <sstream>
#include <iostream>
#include <format>
int main()
{
    // 使用+运算符拼接字符串
    std::string str1 = "Hello, ";
    std::string  str2 = "World!";
    std::string  result = str1 + str2;
    std::cout << result << std::endl;

    // 使用append拼接字符串,新字符串覆盖原来的str1
    str1.append(str2);
    std::cout << str1 << std::endl;


    // 使用+=运算符拼接字符串,新字符串覆盖原来的str1
    str1 = "Hello, ";
    str2 = "World!";
    str1 += str2;
    std::cout << str1 << std::endl;

    // 使用流插入操作符拼接字符串
    std::stringstream ss;
    ss << "Hello, " << "World!";
    result = ss.str();
    std::cout << result << std::endl;

    // 使用format格式化实现字符串拼接
    str1 = "Hello, ";
    str2 = "World! ";
    result = std::format("{}{}",str1,str2);
    std::cout << result << std::endl;
}

上述示例只演示了format格式化的其中一种方法,其它格式方法同样能实现字符串拼接功能。

大小写转换

// 导入内置库
#include <iostream>
#include <format>
#include <algorithm>
#include <cctype>
int main()
{
    // 字符串转换为大写
    std::string  str = "Hello,World!";
    std::transform(str.begin(),str.end(),str.begin(),::toupper);
    std::cout << str << std::endl;

    // 字符串转换为小写
    std::transform(str.begin(),str.end(),str.begin(),::tolower);
    std::cout << str << std::endl;
}

总结

到此,我们分别讲了C++的字符和字符串的定义和基本操作,其中字符串的同一个操作有多种不同实现方式,上述示例仅演示了部分实现方法。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值