文章目录
一、string 字符串 与 char* 字符串转换1、string 与 char* 转换2、string 转为 char* - c_str() 成员函数3、string 转为 char* - copy() 成员函数3、char* 转为 string4、代码示例 - 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* 转为 stringchar* 转为 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
请按任意键继续. . .