c/c++ | char与string

//1.char --单个字符的类型,注意其本质是整数(ASCII码)
char decimalValue = 65;
char hexadecimalValue = 0x41;
char octalValue = 0101;
//上面三行代码表示的都是同一个ASCII整数,最终会解释为字符'A'
//注意:char decimalValue = '65'; 会导致编译错误,正确的表示字符'A'应该如下定义char decimalValue = 'A',你可以这样理解,最终是要表示为65,需要中间字符常量'A'过渡。
//char * 和 char []
char text[] = "hello";	//1
string strtext = "hello";
char* str = &strtext;	//2
//1 和 2等价,前者通过c语言实现,后者通过c++实现,如何实现1 和 2之间转换,一个是字符数组(表现形式:字符串)一个是字符串,但字符串源码也是通过字符数组实现的。
const char * test = &strtext;	//补充这样才完美


vector<string> ans1;	//1
char** ans2;			//2
//1 和 2的格式是一样,等价,但转换时,还需要一点处理
ans1 = {"Apple", "Banana", "Orange"};
char* words[] = {"Apple", "Banana", "Orange"};
ans2 = words;

//char*[] 指向字符指针的数组,用于存储多个字符串。
char* names[] = {"Alice", "Bob", "Charlie"};

//将字符串转换成整数
int atoi(const char* str);
//将c++的字符串转为c的字符串(就这么理解吧,可能不严谨)
//方法1
std::string str = "Hello";
const char* charPtr = str.c_str();
char* charArray = const_cast<char*>(charPtr);
//方法2  拷贝
std::string str = "Hello";
char* charArray = new char[str.length() + 1];  // +1 用于存储 null 终止符
strcpy(charArray, str.c_str());

//反过来怎么转呢?
//charArray --->str
const char* charArray = "Hello";
std::string str(charArray);
//方法2 使用赋值原运算符(也就是 =)
const char* charArray = "Hello";
std::string str;
str = charArray;


//一些字符串的操作,当然还可以使用正则来操作

//1.通过下标获取指定字符
std::string str = "Hello";
char ch = str[2];  // 获取索引为2的字符,结果为 'l'
//2.截取某段子字符串
std::string str = "Hello, World!";
std::string sub = str.substr(7, 5);  // 从索引位置 7 开始,获取长度为 5 的子字符串

//3.将所有字符串全部转为小写
#include <algorithm>
#include <cctype>

std::string str = "Hello, World!";
std::transform(str.begin(), str.end(), str.begin(), [](unsigned char c) { return std::tolower(c); });

//4.将字符串全部转为大写
#include <algorithm>
#include <cctype>

std::string str = "Hello, World!";
std::transform(str.begin(), str.end(), str.begin(), [](unsigned char c) { return std::toupper(c); });

//5.寻找子字符串 注意区分大小写	返回第一次找到的位置
#include <iostream>
#include <string>

int main() {
    std::string str = "Hello, World!";
    std::string searchStr = "World";

    size_t found = str.find(searchStr);
    if (found != std::string::npos) {
        std::cout << "Substring found at position: " << found << std::endl;
    } else {
        std::cout << "Substring not found." << std::endl;
    }

    return 0;
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值