char与string的区别(1)

1,定义及初始化

为了对比char【字符串数组】和string【STL容器】:

定义一个字符串数组a,长度为100,并初始化字符串“Hello world!”,

定义一个string变量s,并初始化字符串“Hello world!”。

#include <bits/stdc++.h>
using namespace std;
int main(){
    char a[105]="Hello world!";
    string s="Hello world!";
    cout<<a<<endl<<s<<endl;
    return 0;
}

 2,接收带空格字符串

为了对比char【字符串数组】和string【STL容器】: 

全局定义一个字符串数组a,长度为100,

全局定义一个string变量s。

使用a接收一个带空格字符串,并输出,

使用s接收一个带空格字符串,并输出。

#include <bits/stdc++.h>
using namespace std; 
char a[105];
string s;
int main(){
    cin.getline(a,sizeof(a));
    cout<<a<<endl;
    getline(cin,s);
    cout<<s;
    return 0;
}

为了对比char【字符串数组】和string【STL容器】:

全局定义一个字符串数组a,长度为10000,

全局定义一个string变量s。

使用a接收一个可能带空格、换行的字符串,使用‘#’作为结束标记,并输出,最后加换行,

使用s接收一个可能带空格、换行的字符串,使用‘$’作为结束标记,并输出,最后加换行。

#include <bits/stdc++.h>
using namespace std; 
char a[10005];
string s;
int main(){
    cin.getline(a,sizeof(a),'#');
    cout<<a<<endl;
    getline(cin,s,'$');
    cout<<s;
    return 0;
}

 更多请看下集:char与string的区别(2)

char类型string类型存在多方面的区别: - **定义本质**:charC++中的基本数据类型之一,用于表示单个字符,占用一个字节,可表示字符的ASCII或Unicode值;而string类型表示字符串,即一系列字符,简单理解为char类型的数组,是char类型元素的扩展[^1][^4]。 - **适用场景**:char主要用于表示单独的字符,如 'a'、'A'、'1' 等;若要存储汉字等字符串,需要用到string类型[^1][^4]。 - **常量表示**:char类型的字符常量是用单引号括起来的字符,例如 'a'、'z'、'1' 等;而string类型的字符串常量是用双引号括起来的,如 "hello" [^4]。 - **内存占用**:char占用1字节内存;string类型的内存占用取决于存储的字符数量,其会根据存储内容动态分配内存 [^4]。 - **语言支持**:在C语言中,没有string类型数据,使用char数组char[])或者字符指针(char *)来声明定义字符串;C++则有string类型数据。C语言的<string.h>头文件里声明的函数原型全是针对char数组的操作,如strcmp、strcpy、strcat等 [^2]。 - **类型转换**:char数组可以直接赋值给string;但string不能直接转换为char数组,可先转换为char指针,再通过strcpy来转换 [^3]。 - **比较操作**:对于char类型,可以直接使用比较运算符(如 <、> 等)比较字符大小;而string类型的比较通常需要使用特定的方法,在C++中可以使用string类的比较运算符或compare方法 [^5]。 ### 代码示例 ```cpp #include <iostream> #include <string> #include <cstring> int main() { // char类型示例 char ch = 'A'; std::cout << "char value: " << ch << std::endl; // string类型示例 std::string str = "Hello"; std::cout << "string value: " << str << std::endl; // char[] 赋值给 string char charArray[] = "World"; std::string strFromCharArray = charArray; std::cout << "string from char[]: " << strFromCharArray << std::endl; // string 转换为 char[] char buf[32]; char* p = const_cast<char*>(str.c_str()); strcpy(buf, p); std::cout << "char[] from string: " << buf << std::endl; return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值