您的位置:首页 > 编程语言 > C语言/C++

c语言中没有string类型变量怎么办?没有bool怎么办?

2014-10-06 20:07 337 查看
国庆闲来看C++,遇到C语言的一个问题,觉得很有趣。
"C语言中有string类型变量吗?"
这里的 string 有 二 义性。
(1) 如果 string 是普通词汇,“C语言中有字符类型变量吗”, 答,有。 字符类型 用 char 声明。
char str[]="This is a string";
 (2) 如果 string 是专用词汇,“C语言中有string类型变量吗”,答,没有。string 是 类,是 class, 不是
类型,不是 type
c语言中没有string类型变量,但不代表其没有管理操作字符串的方法,因为其有一套C字符串变量:
认识:
C字符串变量string:char string []="abc";等价于:char string [4]="abc";
为什么数组长度是4呢?因为C语言编译器会在字符串末尾补上'\0'作为空值得标志,其也独占一字符;
可能你会遇到问题:C语言没有字符数组么?怎么与C字符串区分呢?
这个问题很棒:请注意:char string1 [3]={‘a','b','c'};此string1后面不会有'\0'标志的,所以不是我们所说的C字符串变量。
C字符串变量初始化不用指定长度,C系统内部会自动判断补充,这带了很大的方便,然而在赋值方面却又有了限制:初始化和赋值不能分开:char  a_string[10];a_string="hello";这是错的!!!!!!
事情总会有解决方案:用预定义函数来赋值:include<cstring>   strcpy(a_string,"hello");遗憾的是此函数不能侦察字符串数组越界的问题,可以用strncpy(a_string,"hello",9);此函数多一个数组最大长度参数。
include<cstring> 中的其他函数:
1.判断字符串是否相等strcmp(str1,str2);
注意此函数的反逻辑,相等返回false(0),不等返回true(非0值);
2.strlen(str);返回字符串的长度;
3.strcat(str1,str2);将str2品接到str1后;
另外C语言中没有bool类型,其实完全可以由int和char来代替;
0对应C++f中德false,非0值对应true

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: