码迷,mamicode.com
首页 > 编程语言 > 详细

字符串,字符数组

时间:2020-02-01 00:40:51      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:getc   cpp   ascii   字符   数据   字符数组   基本   span   转义字符   

字符数组/字符串

字符类型

字符类型是能存字符的数据类型,除了存储\(ASCII\)表里面的数组以外,还能存储类似"\n","\t"的转义字符。比如:"\n"是换行,"\t"是制表符(不懂就自己试试)

char a = '\n';
cout << 1 << a << 1;

这个程序的输出就是

1

1

也就是说\(a\)就代表了换行。记得 printf("%d\n",x)的含义吗?这里的\n 和前面的是同样的意思。

字符串

字符串是指一串字符,字符串的实质就是数组。需要特别注意的是,"txtxt"的字符串存储就是"txtxt\0",其中,\0代表一个字符串的结尾。

输入方法:

直接读入一个没有空格的字符串:

string a;
cin >> a;

字符数组

就是字符类型的数组。和字符串有什么区别呢?一点区别

  • 字符数组基本不用
char a[1000];
string b;

以上两种声明方法有什么区别?基本没有。

char a[1000];
string b;
b[0] = 'f';

上面这种操作就是完全可以的。简单来讲:字符串类似字符数组。他们有两点不同之处:

  • 字符数组有两种声明方式:char a[1000],string a 这两种声明方式微微不同。
  • char a[1000]声明的数组不支持a = "abcdefghi"这种赋值方式,但是他支持cin >> a这种读入方式。他支持的赋值方式只有a[3] = ‘k‘;
  • string a数组应该是你能想到的赋值方法都支持。

‘\0‘到底有什么用?既然是表示字符串的结尾,那么输出的时候只要输到‘\0‘,输出就停止。

还有问题?看下面的代码。

\(code1\)

string a = "lcez";
a[0] = 'k';
cout << a << endl;
a = "hh";
cout << a << endl;

\(out\)

kcez
hh

\(code2\)

char a[1000];
a[0] = a[1] = 'y';
cout << a << endl;
a[2] = a[3] = a[4] = a[5] = 'x';
cout << a << endl;
a[3] = '\0';
cout << a << endl;

\(out\)

yy
yyxxxx
yyx

读入一个有空格、用回车隔开的字符串。这里其实有直接实现的语句,但是不好记,所以我们就直接暴力

string a,b;
char c = getchar();\\这个getchar需要记住,除了这个以外都不用记
\\getchar是指读入一个字符
int tot = 0;
while(c != ' '){
    a[tot] = c;
    c = getchar();
    tot++;
}
a[tot] = '\0';
tot = 0;
while(c != ' '){
    b[tot] = c;
    c = getchar();
    tot++;
}
b[tot] = '\0';

字符串,字符数组

标签:getc   cpp   ascii   字符   数据   字符数组   基本   span   转义字符   

原文地址:https://www.cnblogs.com/Cao-Yucong/p/12247093.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!