0
点赞
收藏
分享

微信扫一扫

C/C++和python中的字符串

Java架构领域 2022-04-14 阅读 65
c++python

文章目录


一、C语言中的字符串

C语言中使用一个以’\0’结尾的字符数组来表示一个字符串;
使用字符串相关函数需要引入库"string.h";
C和C++严格区分单引号和双引号,单引号只能用来表示单个字符。

#include "stdio.h"
#include "string.h"

int main() {
    char a[] = "abcdefg";
    printf("%d\n", sizeof(a));//输出8
    printf("%d\n", strlen(a));//输出7
    return 0;
}
char site2[6] = {'A', 'U', 'N', 'O', 'B'}; //这是一个字符数组
char site1[7] = {'A', 'U', 'N', 'O', 'B', '\0'}; //这是一个字符串

二、C++中的字符串

首先,C++兼容C语言中的字符串,C++自身又提供了字符串类string,使用时需要引入头文件"string",string依然可以使用数组的方式进行元素读取。

#include<string>
#include<iostream>
using namespace std;

int main(void) {
    string a = "abcde";
    cout << a.length() << endl; //输出5
    cout << sizeof(a) << endl; //输出32
}

三、python中的字符串

python中不严格区分字符和字符串,单引号和双引号在字符串问题上没有区别。

a = "abcdefg"
#输出7
print(len(a))

python中字符串是不可变对象

a = "aaa"
#以下语句并不是修改原先的字符串,
#而是又开辟一块内存,值为"bbb",然后a指向该内存
a = "bbb"

python会对字符串常量进行池化,至于多长的字符串会被池化,在ipython环境中超过100位的英文字符串依然被池化,而包含4个中文的字符串未池化。

a = "abcdefg"
b = "abcdefg"
#以下语句为True
id(a) == id(b)

类似的池化也会发生在整形变量上,ipython环境下,0–256会被池化。

举报

相关推荐

0 条评论