C语言字符串与C++string对象的相互转换

本文介绍了C语言字符串与C++ string对象之间的相互转换方法。包括如何从C语言字符串创建C++ string对象,以及如何将C++ string对象转换为C语言字符串。通过示例代码展示了具体的实现方式。

C语言中字符串以字符数组的形式存储,以’\0’结尾,而C++中引入了string类作为字符串类型,它们之间可以通过以下方法相互转换:

C语言字符串=>C++string对象

C++中,string类能够自动将C 语言字符串转换成string对象

#include <iostream>
#include <string>
int main(){
    const char *s = "Roger!";
    std::string str1(s); 
    std::string str2 = s;
    std::string str3("Emm");
    str3 = s;
    std::cout << "C str:" << s << std::endl;
    std::cout << "C++ str1:" << str1 << std::endl;
    std::cout << "C++ str2:" << str2 << std::endl;
    std::cout << "C++ str3:" << str3 << std::endl;
}

C++string对象=>C语言字符串

string类型转换成C语言字符串可以用string类的c_str()方法

#include <iostream>
#include <string>
int main(){
    std::string str("Emm");
    const char *s = str.c_str();  //c_str()返回const char *类型
    std::cout << "C str:" << s << std::endl;
    std::cout << "C++ str:" << str << std::endl;
}
### 对比 - **表示形式**:C语言字符串通常用字符数组或字符指针来表示,例如`char str[] = "Hello";`或`char* str = "Hello";`;而在C++中,除了可以使用C语言的方式,还可以使用标准库提供的`string`类来表示字符串,`string`类封装了字符串操作,使用更方便,它在`<string>`头文件中定义 [^1]。 - **操作方式**:C语言中对字符串的操作需要使用一系列标准库函数,如`strcpy`、`strcat`、`strcmp`等;C++的`string`类则提供了一系列成员函数和操作符,如`+=`用于拼接字符串,`==`用于比较字符串等 [^1]。 - **内存管理**:C语言的字符数组和指针需要手动管理内存,容易出现内存泄漏等问题;C++的`string`类会自动管理内存,使用起来更加安全 [^1]。 ### 使用方法 #### C语言字符串使用方法 - **定义初始化** ```c #include <stdio.h> int main() { // 字符数组方式 char str1[] = "Hello"; // 字符指针方式 char* str2 = "World"; printf("str1: %s\n", str1); printf("str2: %s\n", str2); return 0; } ``` - **字符串操作** ```c #include <stdio.h> #include <string.h> int main() { char str1[20] = "Hello"; char str2[] = " World"; // 拼接字符串 strcat(str1, str2); // 比较字符串 int result = strcmp(str1, "Hello World"); printf("str1: %s\n", str1); printf("Comparison result: %d\n", result); return 0; } ``` #### C++字符字符串使用方法 - **`string`类的定义初始化** ```cpp #include <iostream> #include <string> int main() { // 直接声明并初始化 std::string str1 = "Hello"; // 从C语言字符串转换 const char* cStr = "World"; std::string str2(cStr); std::cout << "str1: " << str1 << std::endl; std::cout << "str2: " << str2 << std::endl; return 0; } ``` - **`string`类的操作** ```cpp #include <iostream> #include <string> int main() { std::string str1 = "Hello"; std::string str2 = " World"; // 拼接字符串 str1 += str2; // 比较字符串 bool isEqual = (str1 == "Hello World"); std::cout << "str1: " << str1 << std::endl; std::cout << "Is equal: " << (isEqual ? "Yes" : "No") << std::endl; return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值