首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【C++】STL 容器 - string 字符串操作 ③ ( string 字符串 与 char* 字符串转换 | string#c_str() 成员函数 | string#copy() 成员函数 )

【C++】STL 容器 - string 字符串操作 ③ ( string 字符串 与 char* 字符串转换 | string#c_str() 成员函数 | string#copy() 成员函数 )

作者头像
韩曙亮
发布2023-12-18 12:50:36
发布2023-12-18 12:50:36
2.8K00
代码可运行
举报
运行总次数:0
代码可运行
文章目录

  • 一、string 字符串 与 char* 字符串转换
    • 1、string 与 char* 转换
    • 2、string 转为 char* - c_str() 成员函数
    • 3、string 转为 char* - copy() 成员函数
    • 3、char* 转为 string
    • 4、代码示例 - char* 与 string 互相转换

一、string 字符串 与 char* 字符串转换


1、string 与 char* 转换

string 字符串类 中 封装了 char* 字符指针 ;

  • string 字符串 转为 char* 字符串 , 就是将 封装的 char* 字符指针取出来 ;
  • char* 字符串 转为 string 字符串 , 就是 基于 char* 字符串 创建一个 string 字符串 ;

2、string 转为 char* - c_str() 成员函数

在 C++ 语言中的 std::string 类中 , 封装了一个 c_str() 成员函数 , 用于返回一个指向字符串内容的常量字符指针 ;

将 string 转为 char* 类型 , 就需要调用 c_str() 成员函数 ;

c_str() 函数的原型如下 :

代码语言:javascript
代码运行次数:0
运行
复制
const char* c_str() const;

c_str() 函数 返回一个指向字符串内容的常量字符指针 , 该指针可以用于与C语言库函数进行交互 , 例如使用 printf() 函数打印字符串 ;

代码示例 :

代码语言:javascript
代码运行次数:0
运行
复制
	string s1 = "123456789";

	// 将 string 转为 char* 
	const char* s2 = s1.c_str();

	cout << "s2 : " << s2 << endl;

3、string 转为 char* - copy() 成员函数

std::string 类的 copy() 成员函数 , 原型如下 :

代码语言:javascript
代码运行次数:0
运行
复制
void copy(char* dest, size_t len, size_t pos = 0);

这个函数的作用是将字符串中从 pos 位置开始的 len 个字符复制到目标字符数组 dest 中 ; 默认情况下 , pos 参数为 0 , 表示从字符串的开始位置复制 ;

代码示例 :

代码语言:javascript
代码运行次数:0
运行
复制
	string s1 = "123456789";

	// 为 字符指针 分配内存
	// 分配完内存后 使用 0 初始化
	// 防止随机内容出现乱码导致字符串没有 '\0' 结尾
	char buf[16] = {0};

	// 将 s1 字符串 "123456789" 的 
	// 从 0 开始的 3 个字符 拷贝到 buf 中
	s1.copy(buf, 3, 0);

3、char* 转为 string

char* 转为 string 字符串 , 只需要将 char* 字符串 传入 string 对象的 字符数组构造函数 即可 ;

string 类的 字符数组构造函数 接受一个指向字符数组的指针 s , 并将该数组的内容作为字符串来创建 ;

代码语言:javascript
代码运行次数:0
运行
复制
std::string(const char* s);

代码示例 :

代码语言:javascript
代码运行次数:0
运行
复制
	// 将 char* 转为 string
	string s3(s2);

4、代码示例 - char* 与 string 互相转换

代码示例 :

代码语言:javascript
代码运行次数:0
运行
复制
#include "iostream"
using namespace std;
#include "string"

int main() {

	string s1 = "123456789";

	// 将 string 转为 char* 
	const char* s2 = s1.c_str();

	cout << "s2 : " << s2 << endl;

	// 将 char* 转为 string
	string s3(s2);

	cout << "s3 : " << s3 << endl;

	// 为 字符指针 分配内存
	// 分配完内存后 使用 0 初始化
	// 防止随机内容出现乱码导致字符串没有 '\0' 结尾
	char buf[16] = {0};

	// 将 s1 字符串 "123456789" 的 
	// 从 0 开始的 3 个字符 拷贝到 buf 中
	s1.copy(buf, 3, 0);

	cout << "buf : " << buf << endl;

	
	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
};

执行结果 :

s2 : 123456789 s3 : 123456789 buf : 123 请按任意键继续. . .

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、string 字符串 与 char* 字符串转换
    • 1、string 与 char* 转换
    • 2、string 转为 char* - c_str() 成员函数
    • 3、string 转为 char* - copy() 成员函数
    • 3、char* 转为 string
    • 4、代码示例 - char* 与 string 互相转换
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档