字符串,字符数组

Posted cao-yucong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串,字符数组相关的知识,希望对你有一定的参考价值。

字符数组/字符串

字符类型

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

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

这个程序的输出就是

1

1

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

字符串

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

输入方法:

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

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数组应该是你能想到的赋值方法都支持。

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

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

(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] = '';
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] = '';
tot = 0;
while(c != ' '){
    b[tot] = c;
    c = getchar();
    tot++;
}
b[tot] = '';

以上是关于字符串,字符数组的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 代码片段

10个JavaScript代码片段,使你更加容易前端开发。

10个JavaScript代码片段,使你更加容易前端开发。

csharp LINQPad片段声明了两个字符串数组,吐出了它们互斥的部分。

csharp LINQPad片段声明了两个字符串数组,吐出了它们互斥的部分。

NC41 最长无重复子数组/NC133链表的奇偶重排/NC116把数字翻译成字符串/NC135 股票交易的最大收益/NC126换钱的最少货币数/NC45实现二叉树先序,中序和后序遍历(递归)(代码片段