字符与整数
在c++中,整数和字符实际上在内存中都是按整数形式存储的。
字符在内存中实际存储的是其ASCII码,这也就解释了为什么char的大小只占用一个字节(8bits)
int main(){
char c = 'A';
cout<<int(c)<<endl;
int a = 65;
cout<<char(a)<<endl;
}
字符串与字符串常量
字符串以'\0'作为结束标志,实际在内存中占用大小n+1;
由于存在结束符,可以直接用cout输出
int charlen(char str[]) { //计算字符串长度
int len = 0;
while (str[len] != '\0') {
len++;
}
return len;
}
int main(){
char name[] = "RyannChen";//可以使用字符串对字符数组初始化
char a[] = {'R','y','a','n','n','C','h','e','n'};
cout<<name<<"的内存长度为"<<sizeof(name)<<endl;//10
cout<<a<<"的内存长度为"<<sizeof(a)<<endl;//9
//基于\0计算字符串长度
cout<<name<<"的字符串长度"<<charlen(name)<<endl;//9
}
字符串常量可被视为存在一维字符数组中,可以对字符串常量使用指针的技巧:
int main(){
char* str;//使用char型指针变量存字符串常量的首地址
str = "Hello";
//使用指针/下标访问字符串中的字符
cout<<str<<endl;
cout<<str[3]<<endl;
cout<<*(str+2)<<endl;
//使用指针数组
char *strr[] = {"Basic","Python","c++","Java"};
//使用下标/指针访问数组中的元素
cout<<strr[0]<<endl;
cout<<*(strr+2)<<endl;
//使用下标访问字符串的字符
cout<<strr[0][2]<<endl;
}
字符数组使用
可以使用cin对字符数组直接输入但需要声明数组大小,且cin不接收空格输入
getline与'\0'
#include<iostream>
using namespace std;
/*
输入可能带空格的字符串,计算并输入其长度(即字符个数,含空格数)。
字符串最大长度不超过100。
使用字符数组实现,不使用字符串库函数。
*/
int charlen(char str[]) { //计算字符串长度
int len = 0;
while (str[len] != '\0') {
len++;
}
return len;
}
int main(){
char name[100];
cin>>name;//不接收空格
char ch[100];
cin.getline(ch,100);//接收空格
cout<<name<<"的长度为"<<charlen(name);
cout<<ch<<"的长度为"<<charlen(ch);
}