首页 > 编程知识 正文

c++没有字符串类型,c语言中没有string吗

时间:2023-05-03 09:04:03 阅读:238348 作者:617

C语言中没有string类型

搞懂个事的根本核心是:C语言的数组类型里,唯一和字符串沾边的就只有char型数组了。

所以,理所当然的,我们就会想到用二维字符型数组来建立——把字符串当做数组里的一个元素。
char型的经典用法:

char a = 'E';char b = 70;

有这种正常的字符型数组:

char w[]={'s','d',' ','-'};char w1[]="sda sdasedad 23123-=";char *w1 = "This is a string.";

那么是否有?char w2[][]={"sedqsd","wedqwed","fsdf"};
答案是有的!

#include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[]) { char c[][5] = {"abc","dddl","no"}; for (int i=0; i<3; i++) { printf("%sn",c[i]); } return 0; }

编译截图:

不过这里的char c[][]里第二个中括号里的数值(即6)它决定了每个字符串的长度,最长的dddl其实是5个长度(dddl加上‘’‘’),所以第二个括号里的数值要>=5.第一个中括号则决定了数组里有几个字符串,不写值都可以,但不能小于3.所以,printf里的用了c[]而没有用c[][],因为只需第一个中括号即可说明要打印第几个字符串。

一直以来对这个问题都不是很清楚:只是知道C语言里有<string.h>这个头文件,所以就想当然的认为C语言里有string这个类型。C语言里有int a语句,但没有 string b语句。查了资料才知道原来C语言里压根就没有string这个类型,所有的字符串都是通过char数组来存储的。而<string.h>这个头文件里声明的函数原型也全是针对char数组的种种操作。直到C++中才出现了string这个类。





我不清楚此问题的原因:我本人由于学了C语言、学了C++语言和java语言,java语言也是有string类型的,我由于编程语言学的太多而没有学精某一门编程语言,所以就给学串了。尤其是当C语言好久没用,而java又正好在学,就会把C语言和java语言的语法记混。

C语言中下面这种的不能运行:

#include<stdio.h> #include<stdlib.h> #include <string.h> int main(int argc, char *argv[]) { string s[] = {"abc","dddl","no"}; for (int i=0; i<3; i++) { printf("%sn",s[i].c_str()); } return 0; }

它会在string s[]时就报错。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。